シェルスクリプト総合 その34

■ このスレッドは過去ログ倉庫に格納されています
2020/08/21(金) 15:17:55.64ID:mArnj/tT
シェルスクリプトに関する総合スレッドです。

全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
・「○○(他の言語)でいいやん」は禁止。他のスレに行ってください。

シェルスクリプト総合 その33
https://mevius.5ch.net/test/read.cgi/tech/1584893550/
2020/09/11(金) 14:36:02.66ID:FL1BL0eE
>>101
引数がないのに$1を参照してたら

bash: $1: 未割り当ての変数です

っていうエラーが出るだろ
アホかw
2020/09/11(金) 15:18:28.07ID:GM+a9m1V
>>102
でねえわ。
-uを前提にすんな。
クズ。
2020/09/11(金) 15:22:36.50ID:ClWA61Ey
>>103
お前のようなやつが rm -rf "$path/" とか書いて痛い目見るんだろ
ベストなやり方前提にしろ。ベストなやり方で使えない方法を持ってくるな
2020/09/11(金) 17:22:23.47ID:GM+a9m1V
>>104
勝手に-uをベストに決めつけんな。クズ。
オプションは使うべきときに使え。クズ。

makeみたいな、引数の有無で挙動が変わるコマンドがあって、考えなしに変数をクォートすりゃあいいってもんじゃない、って話をしてんだよ。クズ。
2020/09/11(金) 17:26:30.94ID:rpshaWn6
考えなしにクォートしなかったから
バグが増え危険なコードになってんだろが
107デフォルトの名無しさん
垢版 |
2020/09/11(金) 17:39:34.54ID:cQZtEKri
ガッ
108デフォルトの名無しさん
垢版 |
2020/09/11(金) 17:48:50.71ID:oZv/fWa7
make組のスクツか
2020/09/11(金) 17:53:09.84ID:JEMEP9MD
ガッ
なコード書きたいただの甘えん坊だな ID:GM+a9m1V は
2020/09/11(金) 18:41:08.82ID:GM+a9m1V
>>108
lsでも同じ。
2020/09/11(金) 19:09:02.73ID:JEMEP9MD
シェルスクリプト書くうえで、
command
command arg
どちらも(前にチェック無しで)書きたいなんてほとんどないだろうに。ほとんどないのはあげつらってるのはお前だけという点で明らかだな

ls で言えば
ls target
ls
結果が違うんだから目的も違う
ls ''
でエラーになる方が大体の目的にあっているだろうにとしか思えない
112デフォルトの名無しさん
垢版 |
2020/09/11(金) 21:09:13.16ID:GJYer3nV
>>92
だから、そう説明してるんだよ。わざわざ作り直したり、同じようなものを作らないのがUNIXの考え方。
2020/09/11(金) 21:25:03.10ID:GM+a9m1V
>>111
文盲どもめ。
もともと頻度の話ではない。
クォートしないことにも意義がある、というだけ。

実際、既存コマンドのラッパーみたいなものを書くときなんかでは活用できる。
2020/09/11(金) 21:30:01.59ID:xA9OFzcD
そこでPlan 9 rcですよ。

引用符の種類が一つしかない。
そしてクソほど使いにくいw
2020/09/11(金) 22:09:45.47ID:JEMEP9MD
>>113
文盲と他人をあげつらってるくせにの文盲はお前じゃ
>クォートしないことにも意義がある
誰も意義がないなんて言ってないだろが

発端は
>それな。"$1" みたいにダブルクォートでくくらないといけないのは
>明らかな仕様の失敗だって言われてるし
だからな。その流れ中にクォートありだけをあげつらっている(?)のは、クォートしないことにも意義があるじゃなく読まれてもしょうがないな
2020/09/11(金) 22:26:19.12ID:JEMEP9MD
失敗だって言われてるってその例では「全く」wピンと来ないが、

今時名前の中にスペースが入っているの当たり前で、ほぼ必ずダブルクォートで囲まなければならないのがメンドくさいのは確かだな
逆(単にダブルクォート有無の動作が逆ではなく、ダブルクォート無しでもダブルクォート有りの動作、IFSで分かつなら別の表現)っていうのならわかるが、失敗というほどでもねえなとも思われる
多分、伝わってないのは、そういうことだよw
2020/09/11(金) 22:45:29.66ID:GM+a9m1V
>>115
違うわ、文盲。
>>94
これ。
2020/09/11(金) 22:54:33.23ID:JEMEP9MD
>>117
話には流れがあるんだな
で、お前の言うことには言うほどでもないってこともあるだろう、そのしつこく延々と>>94にたいしてって言うのは。自分で案に認めてるように 頻度 はそうないらしいしw
文盲の意味を履き違えてるなwてかよくわかってないだろう
2020/09/12(土) 00:02:20.83ID:8+3Td7f1
$1と書いてるのに$1がないとみなされるのは
利点ではなく欠点
2020/09/12(土) 01:27:02.50ID:cIbo/3Vm
>>119
シェルの変数は、ただのテキスト置換なレベルだからな。
今さらそんな理想を言っても始まらん。
2020/09/12(土) 01:28:06.18ID:cIbo/3Vm
>>118
いや、あきらかに文盲であることがはっきりした。w
2020/09/12(土) 01:28:55.85ID:Q/cMHo3Y
>>120
> シェルの変数は、ただのテキスト置換なレベルだからな。
それはウソ
2020/09/12(土) 01:51:34.41ID:lVvt6egL
>>121
流れに関係なく、俺の突然言い出したことを理解できないのは文盲というのなら、お前から見たら文盲なんだろな
文盲という意味(厳密な意味じゃない)を理解してないアレだと俺は思うけどな
っていうことで明らかに終わりだな、その投げやり言い放ちだけのレスでw
124デフォルトの名無しさん
垢版 |
2020/09/12(土) 03:31:42.22ID:d3hRbJnw
仮にお前が賢い人間だとするじゃん
仮に相手が馬鹿な人間だとするじゃん
その場合だと争いにならないわけだから争いになってるということはその過程は合っていなかったわけだね
つまり
お前らは馬鹿だってことさ
125デフォルトの名無しさん
垢版 |
2020/09/12(土) 04:17:42.56ID:wMTnI8uy
>>122
コードをどう解釈するのかはシェル内部の仕様。

変数名を文字列として指定し、文字列で指定された変数の値を参照する仕組みもシェルの仕様。

これは結果的にわかりにくい表現、使ううえで間違いやすい仕様として認識されている。

UNIXはたいしたことない欠点をあとから変更する文化はない。

マイクロソフトのように次から次へ新しいものを作っては捨て、作っては捨てということはしない。
2020/09/12(土) 05:24:39.89ID:Q/cMHo3Y
単に互換性のために修正できないだけ
欠点は欠点。修正できない可哀想
だからPOSIXに新しい言語も追加できない
2020/09/12(土) 05:39:35.64ID:Q/cMHo3Y
> 変数名を文字列として指定し、文字列で指定された変数の値を参照する仕組み
ウソ
2020/09/12(土) 05:49:23.00ID:UoolulYH
行為主体(発言主体)の意思ではなく事柄の客観的事実に言及したいのであれば、「ウソ」ではなく「間違い」「事実ではない」といった言葉を用いるべし
2020/09/12(土) 05:49:59.50ID:Q/cMHo3Y
わかってていってるからウソだろう
2020/09/12(土) 06:29:49.25ID:UoolulYH
だろうおじさんでしたか...
2020/09/12(土) 07:07:17.20ID:uZ7XE8wK
本人が否定しなければウソだということ
132デフォルトの名無しさん
垢版 |
2020/09/12(土) 13:09:24.18ID:wMTnI8uy
>>126
そうね。でもそれで大成功をおさめているのがUNIX系。もうすべてがUNIXになりつつある。WindowsのUNIX化もとまらない。

そもそもシェルスクリプトに不満があるのなら、別のスクリプト言語を使えばいい。
2020/09/12(土) 13:09:48.29ID:65NtGZ7l
仕事でシェルスクリプトを触りはじめたけどすぐに地雷を踏む
2020/09/12(土) 13:23:20.82ID:6ll5lvdV
macのローカルで作ったシェルをLinuxで動かしたら悲しいことになった
2020/09/12(土) 14:00:32.63ID:Py28fth2
>>132
> そもそもシェルスクリプトに不満があるのなら、別のスクリプト言語を使えばいい。
/bin/shが他のスクリプト言語になることなんてあるんか?
最小構成で他のスクリプト言語が含まれることなんかあるんか?
POSIXが改定して別のスクリプト言語が使えるようになることなんてあるんか?

現実的にありえない話をしても意味がない
2020/09/12(土) 14:01:12.85ID:Py28fth2
>>133
まあ初心者さんは何でもそうだよね

>>134
だからPOSIX準拠しろって話だ
137デフォルトの名無しさん
垢版 |
2020/09/12(土) 14:34:38.84ID:tj7slUn6
>>133
例えば?
2020/09/12(土) 14:58:47.65ID:cIbo/3Vm
>>133
ワナだらけだからね。
しかたないね。
本当に。。。
2020/09/12(土) 15:02:55.76ID:WICsaeqa
自分が無知なのをごまかすためにわなと言ってる
2020/09/12(土) 15:05:52.91ID:cIbo/3Vm
>>135
じゃあPOSIXなんか無視すりゃいいんだよ。
自分で好きなのをインストールすれば。

poshが普及したりはしないかな?w
2020/09/12(土) 15:52:04.79ID:WICsaeqa
自分は良くても他人のイメージを使うときに困るだろ

posh?好きなら自分でイントールしてろw
2020/09/12(土) 15:58:40.31ID:WICsaeqa
>>140
そのposhとかいうのをmacにインストールしたんだが

$ cd /
posh: cd: too many arguments

で動かないんだがwww

こんなバグソフト普及するわけねーだろwww
2020/09/12(土) 16:01:00.14ID:WICsaeqa
poshを終了しようとして

$ exit
posh: exit: bad number

www
2020/09/12(土) 17:12:01.89ID:cIbo/3Vm
>>141
POSIX互換ならなんでもすべて同じ、ではないから、そんな配慮はムダ。

>>142
ツンデレだな?w
まあがんばれ。
145デフォルトの名無しさん
垢版 |
2020/09/12(土) 17:14:06.13ID:l+/2U9kY
https://hoge1http://hoge2https://hoge3

https://hoge1
http://hoge2
https://hoge3
にしようと、sedやperlワンライナーで頑張ってみたけど
https://hoge1http://hoge2
https://hoge3
にしかならないです

どうやればできますか?
2020/09/12(土) 17:37:28.98ID:lYGfHMY4
>>144
全て同じではないから/bin/shはdashかbashしかありえない
2020/09/12(土) 17:39:17.54ID:bxqUAjH/
PS > "https://hoge1http://hoge2https://hoge3"; -split "http"| %{if($_ -ne ""){"http" + $_}}
https://hoge1
http://hoge2
https://hoge3
2020/09/12(土) 18:48:43.31ID:T2sfpjbr
>>145
echo 'https://hoge1http://hoge2https://hoge3' |
sed -e 's/https\{0,1\}:\/\//\
&/g'

いけるけど?
149デフォルトの名無しさん
垢版 |
2020/09/12(土) 22:08:36.54ID:wMTnI8uy
>>135
シェルスクリプトで全部やるなんて言われたら、バークレー校出身者もびっくりだわw
2020/09/12(土) 23:06:50.77ID:T2sfpjbr
https://mrsh.sh/
A minimal POSIX shell
2020/09/13(日) 01:46:19.84ID:adiCUzyX
>>150
This project is a work in progress.

はい撤収w
2020/09/13(日) 01:47:10.49ID:adiCUzyX
>>149
今話をしてるのはシェルスクリプトでやることの話だろ
153デフォルトの名無しさん
垢版 |
2020/09/13(日) 01:59:03.48ID:Z+zAoG6v
よくわからないのが、シェル関数や外部プログラムを作って、呼び出せばいいんじゃないの。

シェルスクリプトの見た目がどうこうという話は不毛だよ。
2020/09/13(日) 02:53:31.51ID:adiCUzyX
シェルスクリプト(の文法)に不満がある
→別のスクリプト使えばいい。あちこちに頼んで入れてもらえ

馬鹿なの?
どこにシェルスクリプト以外のスクリプト言語が
予めインストールされている世界があるというのか
現実を見たほうがいい
2020/09/13(日) 04:07:42.04ID:yf/OpS3O
>>154
「予め」とか言ってるのが馬鹿。
自分でインストールしようと思えばする。
でなければしない。
それだけ。
2020/09/13(日) 06:59:54.51ID:adiCUzyX
だから他人が作ったイメージでは無理だろ
なんでもroot持ってると思うな
157デフォルトの名無しさん
垢版 |
2020/09/13(日) 08:18:10.16ID:Z+zAoG6v
>>154
そのOSの基本シェルがインストールされていないわけがない。

そもそもシェルがなんなのかわかっているのか?
2020/09/13(日) 08:30:33.36ID:723dk/Fa
>>154
だからシェルスクリプト以外を使えないだろって話をしてる
2020/09/13(日) 08:30:53.63ID:723dk/Fa
間違え

>>157
だからシェルスクリプト以外を使えないだろって話をしてる
160デフォルトの名無しさん
垢版 |
2020/09/13(日) 10:56:17.02ID:lPS2EOvv
>>147,148
ありがとう

>>147
PS???は初見だったんで調べてみます

>>147
先頭のhttpを除外しようと、頭が固くなってた
2020/09/13(日) 11:12:17.07ID:gk+8XYjA
>>160
PSはPowerShell、Windowsのやつなので関係ない
調べるだけ時間の無駄
2020/09/13(日) 11:14:43.75ID:lvPQUdaN
>>151
え,開発途中だったら興味ないの?
2020/09/13(日) 11:16:03.05ID:gk+8XYjA
開発断念には興味ないよw
164デフォルトの名無しさん
垢版 |
2020/09/13(日) 13:04:46.28ID:lPS2EOvv
>>161
助かりました
2020/09/13(日) 14:46:18.01ID:fPwxPBWU
>>164
いえいえ
166デフォルトの名無しさん
垢版 |
2020/09/13(日) 17:11:10.48ID:yiIqPN8F
お前じゃない
2020/09/13(日) 18:32:41.62ID:lvPQUdaN
>>163
This project is a work in progress
2020/09/13(日) 18:38:01.19ID:8aNWh6BR
>>167
コミット見てみ。もう飽きてる。
2020/09/13(日) 20:15:09.89ID:lvPQUdaN
>>168
そんなことわかるなんてすごいね。
170デフォルトの名無しさん
垢版 |
2020/09/13(日) 20:50:53.96ID:Z+zAoG6v
>>159
そもそもおまえはUNIX、Linuxをインストールしたことがあるのか?

かなり不思議なことを言っているぞ?

sedやawkは何か説明できる?
171デフォルトの名無しさん
垢版 |
2020/09/13(日) 20:53:16.41ID:qg7N5frC
Ubuntuのインストールを学ぶべき。
172デフォルトの名無しさん
垢版 |
2020/09/13(日) 21:07:19.31ID:Z+zAoG6v
Linuxをインストールしたら、Perlもデフォルトでインストールされることも知らないんだろうな。

そもそもシェルの概念がわかってないと、シェルスクリプトがシェルのスクリプトだとおそらく理解できない。
173デフォルトの名無しさん
垢版 |
2020/09/13(日) 21:18:59.72ID:Z+zAoG6v
別にシェルからすれば、シェルスクリプトではなく、実行ファイル形式を橋渡ししてマシン語でやり取りしてもらってもかまわない。

ただし、UNIXは既存のものの組み合わせでできるのであれば作らないという思想なので、C言語でゴリゴリ作るやつは批難される。
2020/09/13(日) 22:50:04.20ID:yf/OpS3O
>>172
デフォルトって何?w
Perlはインストールされなくてもおかしくないやろ。
2020/09/13(日) 22:53:06.96ID:yf/OpS3O
>>173
ゴリゴリつくるヤツがいたから、Gitが存在するんやで!w

Linux業界に「思想」なんかない。
あっても、何かの拍子にコロッと変わる。
あんまり真に受けないほうが。
2020/09/13(日) 23:54:22.32ID:w3Y31Eld
Windows10, WSL, Ubuntu 18.04 では、最初から、Python3 も入っている。
anyenv, asdf などで、Ruby, Node.js などの好きなバージョンも入れられる

file `which python`
/usr/bin/python: symbolic link to python2.7

file `which python2`
/usr/bin/python2: symbolic link to python2.7

file `which python3`
/usr/bin/python3: symbolic link to python3.6
2020/09/14(月) 00:00:43.38ID:8/TQSAVT
>>175
>>173はUnixの話をしているのに,
Linuxの話にすり替えるべきじゃないな。

「Linuxの思想はない」かも知れないが,
>>173が言っているのはUnix哲学だ。
178デフォルトの名無しさん
垢版 |
2020/09/14(月) 00:39:00.87ID:LBeWsbwt
>>174
おまえは画面まっくらで、いくらキーを打っても何もできない状態で使うのか?

組み込みならわかるんだか。
179デフォルトの名無しさん
垢版 |
2020/09/14(月) 00:43:01.28ID:LBeWsbwt
>>177
あのさ、LinuxはUNIXをPCアーキテクチャのハード用に、初めは個人が作ったものなんだよ。

UNIXの仕様が完全にはわからなくて、Linuxは少し異なるものになってしまった。

だから、LinuxはUNIXでないと説明される。しかし、UNIXの定義はPOSIX程度しかないため、UNIXから見ればLinuxもUNIXに含めてもいいかなあレベルになる。
180デフォルトの名無しさん
垢版 |
2020/09/14(月) 00:46:08.13ID:LBeWsbwt
>>175
あのね、Linuxはレッドハット社がほぼ標準を決めていて、基本的なところが大きく変わることはない。

あなたの言っている部分は枝葉の部分。
2020/09/14(月) 01:28:26.98ID:arqUoPz9
実際に存在するLinuxの話をしましょうよw

$ docker run -it alpine
/ # perl
/bin/sh: perl: not found
/ # python
/bin/sh: python: not found
/ # pyton3
/bin/sh: pyton3: not found
/ # ruby
/bin/sh: ruby: not found
2020/09/14(月) 01:51:11.45ID:Cxw6q39C
>>177
であれば、ほとんど死んだようなOSの哲学を語ることに現実の意味はない。
考古学者以外は。w
2020/09/14(月) 01:58:31.80ID:8w1wBNml
Alpine は、5MB しかない。
何も入っていない

それに、Ruby on Rails, Node.js などを入れて使うもの
2020/09/14(月) 02:31:04.77ID:Cxw6q39C
>>178
サーバー用最小ならおかしくない。

まさかデフォルトって、GUIデスクトップ用のことを言ってないよなあ?
185デフォルトの名無しさん
垢版 |
2020/09/14(月) 02:41:43.07ID:LBeWsbwt
>>184
おまえさ、CUIの画面があるのがあたりまえだと思っているだろ?

CUIそのものがシェルなんだよ。
186デフォルトの名無しさん
垢版 |
2020/09/14(月) 02:43:36.81ID:LBeWsbwt
コンピューターの仕組みを理解していないのにいちいち見当違いのことを書くんじゃない。
2020/09/14(月) 09:57:03.60ID:Cxw6q39C
>>185
だから何?

>>186
自己紹介乙。w
2020/09/14(月) 10:40:45.77ID:S/jhW9z+
Perlが入ってないLinuxがあるってこともしらんのか
2020/09/14(月) 10:41:04.73ID:S/jhW9z+
しかも有名でよく使われてるディストリ
190デフォルトの名無しさん
垢版 |
2020/09/14(月) 17:25:24.86ID:LBeWsbwt
揚げ足取りは久しぶりに
2020/09/14(月) 17:37:46.13ID:dr1ZmQsx
>>178
どうしてperlかなかったら画面真っ暗で文字が打てないわけ?
192デフォルトの名無しさん
垢版 |
2020/09/15(火) 01:42:38.92ID:Yms7aROo
シェルがなかったらと書いてあるだろ。
しつこいけどシェルは人間とのユーザーインタフェースだよ。
シェルがなければ人間は何もできない。
193デフォルトの名無しさん
垢版 |
2020/09/15(火) 01:43:33.60ID:Yms7aROo
コンピューターは必ずCUIの画面があると思ってしまうのだろうか?
2020/09/15(火) 03:10:33.47ID:0TDTec2Q
言葉遊びには意味がない。
2020/09/15(火) 05:57:39.18ID:+pcRVQQ5
シェルはLinuxに必ずインストールされているが
Perlはインストールされてないものが実際に存在し使われている

話はこれだけだろ
2020/09/15(火) 08:21:54.14ID:QH5y4eUt
>>192
お前コミュ力なさすぎ…
perlがインストールされてなくてもおかしくないってレスに対して、
なんでシェルがなかったら画面真っ暗なんて回答になるんだよ
2020/09/15(火) 11:38:13.21ID:Ru6NgLud
このスレの人ってどうでもいい事になんでこんなすぐ必死になるの?
2020/09/15(火) 13:03:13.91ID:DboEcGlM
>>197
そしてなぜ黙ってればいいのに
こんなことを書き込んでしまうの?
2020/09/15(火) 13:59:53.23ID:y5g42ZKf
真面目で、相手の誤りを修正してあげたいから。
バカで、自分の誤りを認識できないから。

とか、人それぞれに理由があるやろ。
まあ、最大の理由はヒマだから。w
おまえもな。
200デフォルトの名無しさん
垢版 |
2020/09/15(火) 15:48:33.27ID:Yms7aROo
>>196
デフォルトというのはLinuxだったら、bashシェルがインストールされて起動するということ。PerlはLinuxの大半のインストーラが標準設定でインストールしてしまう。
2020/09/15(火) 16:02:10.84ID:0TDTec2Q
>>200
もとの話とつながってないぞ!w
やりなおし!
2020/09/15(火) 17:23:49.50ID:SdJ7XIqb
>>200
bashがインストールされてない環境はあるし実際によく使われている
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況