コミュニティでは、この例ではwhileループを中断できないという問題があります。スクリプトはフォルダ内のファイル数を出力し、数がゼロに達したら別の手順を実行する必要があります。ただし、スクリプトを実行してフォルダからファイルを削除すると、ループは条件を満たさず、引き続き機能します。 Mb、bashスクリプトに初めて触れたときに何が間違っているのでしょうか?ご提案いただきありがとうございます。
var=$(ls some_folder/ | wc -l )
echo "$var"
while [ $var != 0 ];
do
sleep 2
echo "$test"
done
echo "finish!"
答え1
無限ループを作成しました。あなたのケースにls
0本以上の出力ラインがあると仮定すると、実際には次のようになります。
var=1
while [ $var != 0 ]; do
sleep 2
echo "$test"
done
ループ中は値がvar
変更されないため、ループ本文を0回実行するか、スクリプトが外部から終了するまで実行されます。
また、数値比較を実行するために文字列比較を使用していることも指摘する必要があります。数値比較-ne
の代わりに使用する必要があります。!=