パラメータが多すぎるというエラーが発生します。
if [ $( file -b $i ) == "directory" ]
しかし、これを試してみました。
name=$( file -b $i )
if [ name == "directory" ]
とてもうまくいくようです。
誰かがこれを説明したり、文書で説明を指摘したりできますか?
ベストアンサー1
いくつかの質問があります:
]
[
は()パラメータの終わりを表しtest
、これは複数のsを持つ最後のパラメータでなければなりません。]
これはおそらく間違っています。if [ $( file -b $i ) == "directory" ]
上記の方法を使用すると、変数拡張()とコマンド置換(command)の出力で
bash: [: too many arguments
単語の分割が実行され、その前に複数の単語が表示され、エラーメッセージが表示されるため、これらのエラーが発生します。変数の拡張とコマンドの置き換えを引用する必要があります。$i
$()
file
[
=
[ "$(file -b "$1")" == "directory" ]
参考までに、前者は単語分割(およびパス名拡張)を処理するため、代わりにbash
キーワードを使用する必要があります。[[
[