- 1 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/02(木) 05:22:16.82 .net]
- シェルスクリプトの総合スレです。
□お約束 ・特記なき場合は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 にまとめられています 最新の仕様はこちらへ pubs.opengroup.org/onlinepubs/9699919799/ (左上の「Shell & Utilities」 から参照することができます。) ・v7 shに一番近くて、現役(?)のshは、OpenSolaris由来のheirloom sh。 src.illumos.org/source/xref/illumos-gate/usr/src/cmd/sh/ heirloom.sourceforge.net/sh.html ・csh/tcshのシェルスクリプトは推奨されません。 (理由は「csh-whynot」でググれ) ・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。 manや参考リンクを見ましょう。 aproposないしはman -kでそれらしい単語による簡単な検索もできます。 ・シェルで使えるワイルドカード等は正規表現ではありません。 正規表現の話題はスレ違い(正規表現スレへ) ・シェルスクリプトのことをシェルってゆうな □初心者へのアドバイス: ・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも awkまたはperlの方が適した
- 624 名前:名無しさん@お腹いっぱい。 [2023/06/19(月) 06:14:08.74 .net]
- -p に渡っているのは " [Yes/No" だけで、残りの "$1" と "]: " は yn と同じく変数名として解釈されている
read -p " [Yes/No $1 ]: " yn
- 625 名前:名無しさん@お腹いっぱい。 mailto:sage [2023/06/23(金) 17:18:03.40 .net]
- テスト
- 626 名前:名無しさん@お腹いっぱい。 mailto:sage [2023/08/23(水) 21:31:25.96 .net]
- これってどうしてそうなのだろう?
- 627 名前:名無しさん@お腹いっぱい。 mailto:sage [2023/08/27(日) 18:57:22.73 .net]
- readコマンドの引数にダブルクォートを使ってるからだぬ
だから>>614氏が指摘しているコトになってるぬ
- 628 名前:名無しさん@お腹いっぱい。 mailto:sage [2024/02/20(火) 08:47:58.81 .net]
- 先にBを算出することもなく変数の追加もなしで処理2を1箇所にすることは可能でしょうか?
if [ A ]; then Bを算出 if [ B ]; then 処理1 else 処理2 fi 処理2 fi
- 629 名前:名無しさん@お腹いっぱい。 mailto:sage [2024/02/20(火) 14:15:04.07 .net]
- 2度目のエルスを書かなければいいだけじゃなくて?
- 630 名前:名無しさん@お腹いっぱい。 [2024/02/20(火) 17:32:39.42 .net]
- >>619
「処理2」は2度処理される必要があるのかもしれん。例えば、ステータスを1 upするような。 出題者はおそらくelse節を冗長処理として、1度きりの処理の意味で「1箇所にする」と要件を定義したのだろう。 が、現実にこんなアバウト野郎のかもす空気を読んでウカウカとelse節を削ると、分かりにくいバグになったりする。 なので、問題を正確に記述しろ糞ボケと回答すべきだと思う。
- 631 名前:名無しさん@お腹いっぱい。 mailto:sage [2024/02/22(木) 06:05:52.23 .net]
- >>618
else 足りなくね 処理2を1度または2度実行するのに、1箇所にしたいとかイミフ !Aだったら処理2をする つもりなら、そのまま書けばいいだけだな。シェルスクリプトならw Bを前もって算出できるなら、[ A -a B ] って本人も分かってるだろうが、Bを算出することもなくでも、そのまま書こうと思えばかけるわな、 [ A -a { Bを算出; B; } ] 風に
- 632 名前:名無しさん@お腹いっぱい。 mailto:sage [2024/02/22(木) 18:42:19.24 .net]
- { ifを何重にもネストしたブロック } || 処理2
みたいなのでも
- 633 名前:名無しさん@お腹いっぱい。 [2024/03/14(木) 17:20:13.74 .net]
- while ...do
処理1 done <<=LIST= リスト1 =LIST= while ...do 処理2 done <<=LIST= リスト1 =LIST= てののリスト1を一つにできんべか。ただし、リスト1全てに対し処理1をし終えてから処理2を行なう必要があるので、 while ...do 処理1 処理2 done <<=LIST= ではあかん。
- 634 名前:名無しさん@お腹いっぱい。 [2024/03/14(木) 18:05:33.59 .net]
- ヒアドキュメントの中で変数を展開できます。
LIST_CONTENT="リスト1 ... " while read s; do printf '%s\n' "${s}" done <<LIST ${LIST_CONTENT}" LIST
- 635 名前:過去ログ ★ [[過去ログ]]
- ■ このスレッドは過去ログ倉庫に格納されています
|

|