シェルスクリプトの総合スレです。
□お約束
・特記なき場合はBourne Shell(/bin/sh)もしくはPOSIX準拠の互換シェルがデフォルトです。
bash/zsh/ksh/ash/dash/yash/poshなどの専用機能に依存する場合は明示しましょう。
Linuxユーザは/bin/shの正体がbashまたはdashなので特に注意。
FreeBSDユーザは/bin/shの正体がashなので注意。
・POSIXについてのリンクは https://en.wikipedia.org/wiki/POSIX にまとめられています
最新の仕様はこちらへ http://pubs.opengroup.org/onlinepubs/9699919799/
(左上の「Shell & Utilities」 から参照することができます。)
・v7 shに一番近くて、現役(?)のshは、OpenSolaris由来のheirloom sh。
http://src.illumos.org/source/xref/illumos-gate/usr/src/cmd/sh/
http://heirloom.sourceforge.net/sh.html
・csh/tcshのシェルスクリプトは推奨されません。
(理由は「csh-whynot」でググれ)
・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。
manや参考リンクを見ましょう。
aproposないしはman -kでそれらしい単語による簡単な検索もできます。
・シェルで使えるワイルドカード等は正規表現ではありません。
正規表現の話題はスレ違い(正規表現スレへ)
・シェルスクリプトのことをシェルってゆうな
□初心者へのアドバイス:
・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも
awkまたはperlの方が適した処理にはそちらを使いましょう。
・知らないコマンドが出てきたらmanを引きましょう。
・思い通りに動かないときは、まずは sh -x でトレースしましょう。
□回答者への注意事項:
・シェルスクリプトでの処理方法を質問しているのに、よくわからずに
「そういうのはperl使いましょう」と回答するのはやめましょう。
安易にperlに逃げずにシェルスクリプトで処理するのが頭のいいやり方。
質問に対して問題が間違ってるといちゃもんをつけるのもやめましょう
シェルスクリプト総合 その27
https://mevius.5ch.net/test/read.cgi/unix/1525337663/
探検
シェルスクリプト総合 その28
■ このスレッドは過去ログ倉庫に格納されています
2018/08/02(木) 05:22:16.82
2023/08/23(水) 21:31:25.96
これってどうしてそうなのだろう?
2023/08/27(日) 18:57:22.73
readコマンドの引数にダブルクォートを使ってるからだぬ
だから>>610氏が指摘しているコトになってるぬ
だから>>610氏が指摘しているコトになってるぬ
2024/02/20(火) 08:47:58.81
先にBを算出することもなく変数の追加もなしで処理2を1箇所にすることは可能でしょうか?
if [ A ]; then
Bを算出
if [ B ]; then
処理1
else
処理2
fi
処理2
fi
if [ A ]; then
Bを算出
if [ B ]; then
処理1
else
処理2
fi
処理2
fi
2024/02/20(火) 14:15:04.07
2度目のエルスを書かなければいいだけじゃなくて?
616名無しさん@お腹いっぱい。
2024/02/20(火) 17:32:39.42 >>615
「処理2」は2度処理される必要があるのかもしれん。例えば、ステータスを1 upするような。
出題者はおそらくelse節を冗長処理として、1度きりの処理の意味で「1箇所にする」と要件を定義したのだろう。
が、現実にこんなアバウト野郎のかもす空気を読んでウカウカとelse節を削ると、分かりにくいバグになったりする。
なので、問題を正確に記述しろ糞ボケと回答すべきだと思う。
「処理2」は2度処理される必要があるのかもしれん。例えば、ステータスを1 upするような。
出題者はおそらくelse節を冗長処理として、1度きりの処理の意味で「1箇所にする」と要件を定義したのだろう。
が、現実にこんなアバウト野郎のかもす空気を読んでウカウカとelse節を削ると、分かりにくいバグになったりする。
なので、問題を正確に記述しろ糞ボケと回答すべきだと思う。
2024/02/22(木) 06:05:52.23
>>614
else 足りなくね
処理2を1度または2度実行するのに、1箇所にしたいとかイミフ
!Aだったら処理2をする つもりなら、そのまま書けばいいだけだな。シェルスクリプトならw
Bを前もって算出できるなら、[ A -a B ] って本人も分かってるだろうが、Bを算出することもなくでも、そのまま書こうと思えばかけるわな、 [ A -a { Bを算出; B; } ] 風に
else 足りなくね
処理2を1度または2度実行するのに、1箇所にしたいとかイミフ
!Aだったら処理2をする つもりなら、そのまま書けばいいだけだな。シェルスクリプトならw
Bを前もって算出できるなら、[ A -a B ] って本人も分かってるだろうが、Bを算出することもなくでも、そのまま書こうと思えばかけるわな、 [ A -a { Bを算出; B; } ] 風に
2024/02/22(木) 18:42:19.24
{ ifを何重にもネストしたブロック } || 処理2
みたいなのでも
みたいなのでも
619名無しさん@お腹いっぱい。
2024/03/14(木) 17:20:13.74 while ...do
処理1
done <<=LIST=
リスト1
=LIST=
while ...do
処理2
done <<=LIST=
リスト1
=LIST=
てののリスト1を一つにできんべか。ただし、リスト1全てに対し処理1をし終えてから処理2を行なう必要があるので、
while ...do
処理1
処理2
done <<=LIST=
ではあかん。
処理1
done <<=LIST=
リスト1
=LIST=
while ...do
処理2
done <<=LIST=
リスト1
=LIST=
てののリスト1を一つにできんべか。ただし、リスト1全てに対し処理1をし終えてから処理2を行なう必要があるので、
while ...do
処理1
処理2
done <<=LIST=
ではあかん。
620名無しさん@お腹いっぱい。
2024/03/14(木) 18:05:33.59 ヒアドキュメントの中で変数を展開できます。
LIST_CONTENT="リスト1
...
"
while read s; do
printf '%s\n' "${s}"
done <<LIST
${LIST_CONTENT}"
LIST
LIST_CONTENT="リスト1
...
"
while read s; do
printf '%s\n' "${s}"
done <<LIST
${LIST_CONTENT}"
LIST
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 渡邊渚「性を売ってるくせに」批判に反論 幻滅「これが日本の現状だよなー」「『渾身の下着!』というような意味でやってない」★2 [Ailuropoda melanoleuca★]
- ひろゆき氏、日中対立に 「結局、人口というのは国力なので。10億人以上いる国に、1億2000万人で対抗可能であるというのが間違い」 [冬月記者★]
- 「おこめ券」でJAを救済したいだけ…税金4000億円で"史上最高値のコメ"を買わせる農水大臣とJAの癒着ぶり [バイト歴50年★]
- 渡邊渚さん脅迫か 写真集に包丁置く写真投稿 30代女性書類送検 渡邊さん「外に出るのも怖く身の危険を感じる」 [ひかり★]
- 【千葉】会社で58歳女性刺される 殺人未遂容疑で同僚の中国籍の男(39)逮捕 女性死亡 いすみ市 [ぐれ★]
- 【格闘技】朝倉未来「てめえ、今からやってやろうか?」 前代未聞のブチギレ! 関東最大級ギャングの元ボスと一触即発 [冬月記者★]
- お茶会聯合自治政府 貳
- 元グラドルで国会議員の佐々木りえ(43)、夫にサンドイッチのパンを頼んだら6枚切りを買ってきてキレそうに→Xで絡まれさらにキレる [808139444]
- 【速報】人気ミュージシャン、高市首相のアーティスト支援表明にブチギレ「自分で潰しておいてどの口が…一刻は早く辞任しろ!」 [339712612]
- 【風向き】ヤバい!高市が導入を検討する「防衛特別所得税」、ネトウヨらもまさかの反対の大合唱。。さすがに国民を舐めすぎたか? [219241683]
- お茶会聯合自治政府
- jcコテだけどお前らの家庭環境と家族構成が知りたい
