私は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
代わりに