こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

シェルスクリプトで、

シェルスクリプトで、
while [ $1 ]
ってどういう意味ですか? [ ]の中に条件式が入ってるわけじゃないので意味がよく分かりません。

投稿日時 - 2017-11-24 15:00:37

QNo.9400835

困ってます

質問者が選んだベストアンサー

[ は test コマンドの別名です。
man bashによると、
> 引き数が 1 個
> 引き数が空でない場合に限り真になります。

他の言語風に書くと、
while "$1" != ""
みたいなことでしょうか。

投稿日時 - 2017-11-24 23:00:32

ANo.3

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

while のループのなかに、shift って書いてないですか?

while [ $1 ]
do
 echo $1
 shift
done
のようにすると、引数の数だけ繰り返すループを作れます。

投稿日時 - 2017-11-25 22:36:18

ANo.2

$1がTrue状態で、無限ループさせて、そのブロック内の
条件判定でbreakでブロックを抜けるという処理をしているのでは
ないかと思います。

[]については、
http://shellscript.sunone.me/while.html

投稿日時 - 2017-11-24 20:42:44

ANo.1

test コマンドの説明見れば分かりますが $1 が文字列として有効なら真ですが、"" で括った方が安全です。

while [ "$1" ]

投稿日時 - 2017-11-24 20:08:47