bashでif文を繰り返す方法は?

bashでif文を繰り返す方法は?

ユーザーに質問し、答えを提供し、iという変数に保存するようにし、答え(ファイル)が存在し、書き込み可能な場合はそれを読み、内容を把握します。ファイルと挿入このコンテンツは新しいコンテンツに書き込まれます。ファイルが存在しない場合、またはユーザーがファイルに対する十分な権限を持っていない場合は、警告メッセージが表示され、プログラムは3秒間スリープモードに入り、ループを再開します。なぜ動作しないのですか?警告は消えず、サイクルは続行されません。

echo "$(tput setaf 4)  Tell me where the file is:"
printf "\n"

a=false
while [ $a=true ]; do
    read i
    if [ -w $i ]
        then cat $i | grep stuff > i2
    else
        a=true
        printf "Oh something is wrong, try again!"
            sleep 3
    fi
done

ベストアンサー1

文法的、論理的なエラーがあります。

これは$a=true比較操作ではなく単純な文字列です。簡単に比較できるようにスペースで区切ります。"$a" = true

これを完了したら、あらかじめ設定しておいたので、ループにまったく入らなくなりますa=false

ループに陥ると、それ以外のものにa設定されたことがなく、true他のシャットダウンメカニズムが提供されないため(たとえばbreak)シャットダウンできません。

おすすめ記事