空のテスト処理

空のテスト処理

私はbashを学んでいますが、このコード行がどのように機能するのか(混乱しています)if [$1 = ]; then。誰かがこれを説明できますか?

Bashチュートリアルでここ下にファイル名の変更(六番目のブロック)

# a quick check to see if any files were given
# if none then it's better not to do anything than rename some non-existent
# files!!

if [$1 = ]; then
    echo "no files given"
    exit 0
fi

ベストアンサー1

このコードは間違っています。引数が特殊文字ではないため空でなく(空白で始まらない場合)、別の単語でない場合(認識で使用されていない場合でも[)は機能しません。[[コマンド。

set -xシェルが見るものを示すために:

set -x
[$1 = ]
    + '[' = ']'

[]この場合との間に文字列があるため、テストはtrueです=

NULL以外のパラメータのテストは、次のように実行する必要があります。

[ -n "$1" ] ; echo $?
    + '[' -n '' ']'
    + echo 1

または

[ -z "$1" ] ; echo $?
    + '[' -z '' ']'
    + echo 0

代わりに

おすすめ記事