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

■ このスレッドは過去ログ倉庫に格納されています
2018/09/21(金) 23:34:47.98ID:/eJt2TVD
シェルスクリプトに関する総合スレッドです。

全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。

前スレ:
シェルスクリプト総合 その28
http://mevius.5ch.net/test/read.cgi/tech/1532397676/
2019/02/25(月) 15:46:48.84ID:jjF3mg4o
case $VAR in
 *[^a-z]*) ;; # a-z以外の文字がある
 *) ;; # a-zのみで構成
esac

でいいやろ?
置換処理しないから更に速いはず
32デフォルトの名無しさん
垢版 |
2019/03/17(日) 00:42:11.09ID:vYpDkOnV
foo() {
echo 1
echo
echo
echo
}
a="$(foo)"
echo "$a"


ってやったら、最後に改行がいくつあっても消えちゃうんだけどさ
aに改行ごと入れる方法ない?bash依存なしで
33デフォルトの名無しさん
垢版 |
2019/03/17(日) 01:22:55.25ID:MBTcz8WL
>>32
a="$(foo; echo @)"
a="${a%@}"
2019/03/17(日) 22:55:33.85ID:8/J7EWL3
$ ( a="a,,b,,c"; IFS=","; set -- $a; echo $3; )
b

$ ( a="a b c"; IFS=" "; set -- $a; echo $3; )
c


なんでや?
2019/03/17(日) 23:27:41.47ID:uNuvPAZ3
なんでやと言われましても…
2019/03/17(日) 23:50:57.39ID:Y/j3QiNl
空(くう)を理解出来ないタイプの馬鹿って結構いるんだよな
2019/03/17(日) 23:54:01.74ID:8/J7EWL3
スペース か カンマ かによって
挙動が違うっておかしいだろ
2019/03/18(月) 00:09:19.55ID:iRq0tZYn
挙動は同じだけど?
2019/03/18(月) 00:25:52.00ID:Z0jAEi8m
わざわざそうしてるってなんで理解できないんだろかな
2019/03/18(月) 01:57:01.83ID:0Zzw4/NV
>>38>>39 で矛盾してますけど?
2019/03/18(月) 03:19:57.67ID:bAHak1a6
同じ挙動してるじゃん?
2019/03/18(月) 03:38:05.43ID:YXzanjRe
>>40
別人だからな。なんで同一視してんのかわからんな
2019/03/18(月) 03:39:03.36ID:0Zzw4/NV
あぁ、ブラウザで見るとスペースが1個になるのねw


$ ( a="a<カンマ2個>b<カンマ2個>c"; IFS=","; set -- $a; echo $3; )
b

$ ( a="a<スペース2個>b<スペース2個>c"; IFS=" "; set -- $a; echo $3; )
c


これで意味分かるやろ?

<カンマ2個>は ,, のこと
<スペース2個> も同様
2019/03/18(月) 03:41:08.39ID:YXzanjRe
やっぱり、元のヤツか。>>40といい独特というか視野が狭いというか思考理解力が狭いな
>>36が答えでもう終わってるだろうに
2019/03/21(木) 19:54:41.91ID:jzAF3+In
あからさまに挙動見て仕様 理解できないとか・・・
2019/03/21(木) 22:56:46.84ID:RZb/N1K/
シェルスクリプトにヒアドキュメントって
"HERE" でも 'HERE' でも変数展開行われないのか・・・
"HERE" は HERE と同じだと思っていた
2019/03/21(木) 23:25:35.49ID:bEjwjHsM
なんで展開されると思えるのか、そこが少し不思議
2019/03/22(金) 02:16:32.57ID:xgV52nBe
>>47
シェルスクリプトだけじゃなくて、他の言語も勉強するといいですよ
2019/03/22(金) 03:13:10.80ID:eOBuYNEJ
>>48
なんで俺に?
50デフォルトの名無しさん
垢版 |
2019/03/22(金) 06:47:12.77ID:aoKwVDMo
> If no part of word is quoted, all lines of the here-document shall be expanded for parameter expansion, command substitution, and arithmetic expansion.
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_07_04

\HERE とか
HE"R"E とか
""HERE でもいいんだな
2019/03/22(金) 11:57:50.97ID:g5h3mGP7
a = <<"EOT"

EOT

Ruby では、" " なら、バックスラッシュ・式展開が使える。
' ' なら使えない
2019/03/22(金) 12:46:19.30ID:eOBuYNEJ
ヒアの中身の話をしてるんじゃないのか?
なんだかrubyとかやってる人ってとんちんかんな人多いよなあ
2019/03/22(金) 14:48:23.02ID:HU9xhxJ/
>>47に対して>>48の意味が>>51だったてことだろ。意地はるなみっともない
2019/03/22(金) 20:16:49.37ID:eOBuYNEJ
>>53
ますます意味不明
なんでルビーがでてくるし?
2019/03/22(金) 22:38:33.79ID:z9ChYb8e
あー、もしかして、ヒアドキュメントが
他の言語にもあるって知らない人かな?
もう少し勉強したほうが良いよ
2019/03/22(金) 23:03:22.48ID:u7m3wqcd
スレタイ読めない人がいるな
2019/03/22(金) 23:42:28.23ID:HU9xhxJ/
この件は別に他の言語での知識経験から故にで全然おかしくないだろう
単にそう思ったのはそうだったのかで済む話でしかないだろうに。何を拘っているんだか
2019/03/22(金) 23:44:22.75ID:eOBuYNEJ
環境によって頭を切り替えられない馬鹿だという告白ってこと?
それならまあ納得なのだが。
2019/03/22(金) 23:48:13.41ID:HU9xhxJ/
なにを言っているんだか。単に「よく」調べないで経験則で思い込んでいたってだけだろう。そういう人もいてもおかしくはないだろう
誰かのように、どうも最初から馬鹿にしたいだけなら違うんだろうけどな
2019/03/23(土) 11:21:25.87ID:V0vJvcu9
「普通は」他の言語の知識があるわけで、
他の言語がそうだったから、シェルスクリプトでもそうだと
思ったのに違っていて驚いたってだけの話だろ

なんで言語が変わったら、0から言語仕様を勉強します。
以前の言語の知識は全て捨てて、最初から学び直しますってなるんだ?
文法は「知らない」 or 「間違いなく知ってる」 のどちらかしか無いはずなんです。
「他の言語がそうだったから、同じだろう」なんて思うやつなんてありえないんです。
そう考えてるのか?そんなやついないだろ。
2019/03/23(土) 12:19:57.25ID:O+DUttYl
  /\___/\
/ /    ヽ ::: \
| (●), 、(●)、 |    / ̄ ̄ ̄ ̄ ̄ ̄ ̄
|  ,,ノ(、_, )ヽ、,,   |  < まーたはじまった
|   ,;‐=‐ヽ   .:::::|    \_______
\  `ニニ´  .:::/
/`ー‐--‐‐―´´\
2019/03/23(土) 12:27:43.57ID:daYwWoP0
たかが>>46の独白(?)に何をそんなに必死になっているんだか
何かが気に食わなかったのだろうな>>46のレスの内容ではなくて
2019/03/23(土) 13:51:52.81ID:V0vJvcu9
1. シェルスクリプトの仕様に文句言われて悔しい
2. 俺にとっての常識が、井の中の蛙だとばれて悔しい

どっちか
2019/03/23(土) 14:29:37.54ID:daYwWoP0
いやいやw君がなんだか。なにその読めなさはwずっと同じ人?
2019/03/23(土) 14:39:44.63ID:q0JuU/5a
>>63
3.おまえがバカを晒して悔しい
だろう?
2019/03/23(土) 14:42:21.52ID:V0vJvcu9
俺が>>46なんだが?
2019/03/23(土) 14:51:13.97ID:daYwWoP0
>>66
えーっ、おれが馬鹿を晒してしまったやんけっ
なにを長文で、わかりづらいネチっこい最後の部分。あんたのスタンスなんぞがわかっているのが居るんだからなにをわざわざな...もう
まあ、すまんかった、いろいろと
2019/03/23(土) 16:37:26.87ID:q0JuU/5a
>>66
だからだよw
2019/03/23(土) 18:12:02.34ID:V0vJvcu9
理由が書いてないものに意味はないよ。
ばーかばーかっていってるのと同じだからね
2019/03/23(土) 22:04:19.40ID:x8gXkLwZ
Rubyさいこおおおおおおお
シェルはほろびろおおおお
2019/03/23(土) 23:36:39.28ID:xoOtakOI
やれやれ、延長戦か。昨日ので終わってれば普通のまともな人に見えたのに。
2019/03/24(日) 11:30:58.75ID:WkQ3cHj8
ジョブって使ったことあります?
fgとかbgぐらいはあると思うんですが、
そういうのってコマンドラインじゃなくて
シェルスクリプトで使うことって考えられますかね?
2019/03/25(月) 08:32:22.35ID:Gker1m8S
俺はないけど
単に経験が浅いだけかも知れない

ただ,似非の非同期処理として,ネットワーク資源をwgetなんかで取得しているジョブと同時に
その資源に依存しない種々の作業を同時に実行して,
その資源が必要になった段階でwaitコマンドでwgetの終了を待つ,
みたいなことはよくやる。
2019/03/29(金) 07:25:41.51ID:KhBeLwdl
USR1シグナルって受け取ったら
trapしてても死んじゃうの?
2019/03/29(金) 08:09:44.39ID:iZJL5S3u
いいや
シグナルに対してハンドラが無い場合死ぬのであって、trapしてんだか死なない
2019/03/29(金) 10:51:28.75ID:KhBeLwdl
いや死ぬんだが? これ実行してみ

[main.sh]
#!/bin/sh

trap 'echo USR1' USR1

for i in $(seq 1 10); do
./child.sh "$$" &
done
wait

[child.sh]
#!/bin/sh

sleep 0.1
kill -USR1 "$1"
2019/03/29(金) 14:30:15.21ID:iZJL5S3u
ただの正常終了、main.sh処理全部終わりましたでしょがー
意図した動きになるようには書いてないだけでしょう
2019/03/29(金) 15:51:57.16ID:KhBeLwdl
>>77
実行すらしてないようだから、実行結果書いておきますねw

$ ./main.sh
USR1
USR1
$ ./child.sh: 4: kill: No such process

./child.sh: 4: kill: No such process

./child.sh: 4: kill: No such process

./child.sh: 4: kill: No such process

./child.sh: 4: kill: No such process

./child.sh: 4: kill: No such process
2019/03/29(金) 16:03:50.50ID:iZJL5S3u
なにそれ。性根の悪いヤツだな
man bashでwait及びシグナルんとこ読みなさい
2019/03/29(金) 16:07:09.38ID:KhBeLwdl
>>79
はいどうぞ。

wait [n ...]
n が与え
られていない場合には、現在アクティブな全ての子プロセスを wait し、 返却ステータスは 0 となります。


疑問点があれば受け付けますよ?
2019/03/29(金) 16:08:06.24ID:iZJL5S3u
なんか続きそうでメンドくさくなった
ただの正常終了、「main.sh処理全部終わりました」
だよ。
wait
じゃなくて
until wait
do
:
done
とかだろう。どう意図した動きにしたいのか知らんけど、間違いは
2019/03/29(金) 16:08:42.72ID:iZJL5S3u
マジで性根の悪いヤツだった。言ったことやってから言えよな、もう
2019/03/29(金) 16:13:17.88ID:KhBeLwdl
> 言ったこと
ってどれ?w
2019/03/29(金) 16:16:44.69ID:iZJL5S3u
「シグナルんとこ読みなさい」だよ。くそがw
よく笑ってるな。まじでなんなん?ただのプライドが高いアレか
2019/03/29(金) 23:35:25.52ID:6TL4Muj2
どこまで本気なのかなあ。
小学生が頭の悪そうななぞなぞで得意がってるとか、そういう雰囲気を感じる。
とりあえず
「シグナルで死んだんなら、なんで echo が実行されてんだよ!」
とつっこんでおくよ。
86デフォルトの名無しさん
垢版 |
2019/03/30(土) 15:21:37.81ID:iJ+PacLA
シグナルで死んでるんじゃなくて全てのプロセスが終了する前に wait から抜けちゃうってことだな。
理由はシグナル受け取っているからだが。
2019/03/30(土) 23:21:26.53ID:s3xILrfA
Ruby のSignal モジュールを使え

割り込み : Ctrl + C

Signal.trap("INT") { |signo| puts Signal.signame(signo) }
Process.kill("INT", 0)
2019/03/30(土) 23:27:14.67ID:VjxmND9i
スレ違い
2019/03/31(日) 06:29:53.92ID:QZIPpnnl
ちゅうかお題違い
2019/04/01(月) 01:31:26.57ID:IKNNLLYB
for i in *; do
echo "$i"
done

これって必ずソートされるの?
2019/04/01(月) 01:55:34.42ID:dFHstMQf
POSIXでソートすることになってる
2019/04/01(月) 08:49:30.39ID:IKNNLLYB
へー、取得したいのは最初の一個だけでいいんだけど、
その最初の一個は、小さいものになるんか

というか、一個だけ取得する速い方法ないかな?
でもソートしてるなら、結局内部で全部読み込むのか?
2019/04/01(月) 09:43:29.00ID:NOgINnam
へんなの居付いたな
2019/04/01(月) 10:02:05.99ID:IKNNLLYB
そりゃ俺が立てたスレだしなー
2019/04/01(月) 10:28:36.49ID:ifPcZP08
ls -1U とか?
2019/04/04(木) 00:24:00.86ID:opkeFDjY
1.txt, 2.txt, 3.txt と3つファイルがあるディレクトリでecho * したら
これらのファイルがでてくるのに空のディレクトリで、
echo * したら * と表示されるのなんで?
何も表示されないでほしいんだけど、この仕様、なにか便利なの?
2019/04/04(木) 03:15:34.42ID:7s/hio3T
echoがやってるんじゃないし...
2019/04/04(木) 03:21:22.66ID:xQGJKB0I
エコーさんはね、もらったものをエコーするだけだってね、ママがいってたの
2019/04/04(木) 04:46:21.43ID:19nHnpBp
cat *
とかで困るだろうに
2019/04/04(木) 11:44:59.87ID:opkeFDjY
echoがやってるかどうかは論点じゃないしw
2019/04/04(木) 13:06:19.36ID:/xpppM3k
いや、重要だぞ。何の man を読めばいいかというのは。読む気があればね。
2019/04/04(木) 14:25:13.45ID:opkeFDjY
それで質問の答は?
2019/04/04(木) 15:00:27.41ID:19nHnpBp
答えはmanに書いてある。なんでかは「読まなければならない」けど
2019/04/04(木) 15:08:08.53ID:vligoyoR
>>102
echo は渡された文字列をそのまま出力する仕様なので、* を渡されたら * が出力される。というのが回答だよ。
2019/04/04(木) 16:46:44.95ID:/xpppM3k
まあ、「'*' はいらない」というのももっともなことだしね。
bash を使ってるなら man の「パス名展開」の項を読めばいいかも。
bash じゃない場合は…読めばなんとかなるでしょ。
2019/04/04(木) 16:53:45.66ID:19nHnpBp
いらないからいる(?)になってるんだけどね。それもそうmanに書いてある
2019/04/04(木) 17:59:04.72ID:opkeFDjY
>>104
聞いてるのは仕様ではなくて、
どうしてそうしたかの理由です。
2019/04/04(木) 18:17:25.75ID:19nHnpBp
だからmanに書いてあるってw
2019/04/04(木) 19:15:53.98ID:opkeFDjY
書いてないから聞いてる
2019/04/04(木) 19:20:19.17ID:19nHnpBp
書いてあるんだなあ。書いてないんじゃなくて探してないだな
2019/04/04(木) 19:23:19.35ID:opkeFDjY
最近、無いものをあると言いはるのが増えてるのか?
無いものはいくら探してもないし、
有るならさっと出すことぐらいできるだろ
2019/04/04(木) 19:24:58.44ID:19nHnpBp
なんかいたね、ちょっと前のシグナルの質問してたのとか
煽って自分では労力さかずに答え出させようしてんの?w
2019/04/04(木) 19:30:55.71ID:opkeFDjY
んで答えは?w
2019/04/04(木) 19:31:22.20ID:19nHnpBp
manに書いてあるw
2019/04/04(木) 20:09:11.90ID:opkeFDjY
書いてない
2019/04/04(木) 20:21:01.39ID:19nHnpBp
マンザイとしてはそれはないな。オモロクないやん、マンザイとして。いい感じだったのにw

その言い張り方が、なんか既視感ありすぎ。そしてよく「言いはるのが増えてるのか」なんて言えるなあ
まあ、ふんわりとした答えは>>99で答えてるんだけどね。それはmanに書いてた説明からだよ
ところでOSなに使ってるの?
2019/04/04(木) 20:24:57.07ID:opkeFDjY
catが困るのは、単にcatの仕様がクソってだけだろう
標準入力から読み込むためのオプションの - があるのに、
引数なしだと標準入力から読み込もうとするわけだから
2019/04/04(木) 20:28:22.13ID:19nHnpBp
浅いな、catは一例なのに
そのやたらプライド高そうだけど、全然そのプライドを裏付けるもの無いから、こんなことになってんやで?まあ、プライド高いから言ってもわからんだろけど

ちなみに、'*'でなくて''でもよさげなんだけど、'*'の方がやっぱりいいんだな(と、思う。そう具体的に書いてない、''に言及してはいないけど)。さて、どうしてでしょう?
2019/04/04(木) 20:45:06.72ID:opkeFDjY
> さて、どうしてでしょう?

お前にその答えが言えんの? *の方が良いと思ってるようだが、
正確にはディレクトリが空の時に帰ってくるのは、正確には*じゃないんだが
2019/04/04(木) 20:49:41.59ID:19nHnpBp
うん、>>117なんて宣える人にそう言われてたくないけど。やっぱ想像はつかないのね。なのになんで疑われているのかさっぱり。また煽って喋らせる手法?w

正確にはってのはイミフ。なんの正確?なにを言いたいのかイミフだがほぼデフォルトの環境ではそうだよ、てか、そう決められているはずなんだがなあ
2019/04/04(木) 20:54:08.11ID:opkeFDjY
聞いてるのは、決められているかどうかじゃなくて
なぜそういう風に決めたかだって言ってるだろ
2019/04/04(木) 20:55:07.83ID:opkeFDjY
だいたい、俺の想像していることがわかってない時点で
お前はダメダメなんやで?わかってるか?

俺の想像していることぐらい読み取れ!
2019/04/04(木) 20:56:45.08ID:opkeFDjY
ディレクトリが空の時に帰ってくるのは * ではありません。
echo ? だと ? が帰ってきます。
2019/04/04(木) 20:58:07.29ID:opkeFDjY
echo *[a-z]* だと *[a-z]* が帰ってきますが、

さて、このディレクトリは空でしょうか?
それとも *[a-z]* という名前のファイルがあるのでしょうか?
2019/04/04(木) 20:58:24.17ID:19nHnpBp
だから、なぜそういう風に決められたかっていうことをずーーっと言っているんだけど?
あんたが自分勝手な自分だけの思いで自分の考えに固執してるから先に進んでないんだけなのに。既視感ありまくりw

'*'の方がいいとまでちょっと進んで言っているのに聞かないで反発してるだけだし。答えは書いてある。さあ、理解に向けて進んでみようw
2019/04/04(木) 21:02:36.29ID:19nHnpBp
>>123,124
そりゃそうだ。根本的に勘違いしてる。*なんだから'*'、?なんだから'?'、[a-z]*なんだから'[a-z]*'でしょに。なにを言っているのだか

なんで、ますますプライドを裏打ちするものが無いって自ら開陳するかなあ。捨てなその意味ないプライドは。文字通りプライドが邪魔する(意味が違うか?w)でしょうに
2019/04/04(木) 21:04:35.03ID:7s/hio3T
>>122
あすぺってこういう人のこと言うの?
違う?
2019/04/04(木) 21:04:35.25ID:opkeFDjY
だから答えは書いてないって言ってるだろ

いい加減、悪魔の証明は辞めてくれ。
無いものは無い。無いという証拠を見つけられないなら
悪魔はいるってことだ!←ほんと馬鹿みたいだ
2019/04/04(木) 21:07:34.48ID:19nHnpBp
答えは書いてあるよ。ふんわりと。あんたに理解できるようには書いてないかもだけどwいや、プライド高いお人だからわかると思うんだけどということでw

悪魔の証明でもなんでもないのになあ。なんとか言わせたくて必死な感じ?通用しないよ何度もはw
2019/04/04(木) 21:08:58.45ID:opkeFDjY
※書いてないから、言えないのです
2019/04/04(木) 21:09:37.50ID:19nHnpBp
>>127
俺のこと?違うよww わざとやってます。なんかオモロイから
なんで自分の労力を割くのが嫌いなくせに、まわーーーーーり道してんのかなあと。どこまで回り道すんのかなとw
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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