1

引数が有効なファイル名かどうかを確認する必要がありますが、これは正しい方法ですか? インライン 2 で間違いを犯したようですが、どこかわかりません。

for i in ${@}; do                                   
if [ -f ${i}]; then                             
    echo ${i}
else continue
fi
done
4

3 に答える 3

2

まず、角かっこを閉じる前にスペースが必要です。また、ファイル名にスペースがある場合に備えて、変数を引用符で囲む必要があります。

for i in "${@}"; do 
if [ -f "${i}" ]; then
    echo "${i}"
else continue
fi
done

else continue」の代わりに配置する予定の何かのプレースホルダーでない限り、「」は不要ですcontinue

于 2009-09-19T18:14:29.917 に答える
1

ファイル名にスペースが含まれていても機能する簡潔なソリューションを次に示します。

for i
do
    test -f "$i" && echo "$i"
done

for ステートメントはコマンド ライン引数を想定しているため、それ以上入力する必要がないことに注意してください。test コマンドは、if .. then .. fi の短縮形です。

于 2009-09-20T03:19:45.950 に答える
0

-fは、${i}が通常のファイルであることを確認します。

于 2009-09-19T18:11:44.330 に答える