引数が有効なファイル名かどうかを確認する必要がありますが、これは正しい方法ですか? インライン 2 で間違いを犯したようですが、どこかわかりません。
for i in ${@}; do
if [ -f ${i}]; then
echo ${i}
else continue
fi
done
引数が有効なファイル名かどうかを確認する必要がありますが、これは正しい方法ですか? インライン 2 で間違いを犯したようですが、どこかわかりません。
for i in ${@}; do
if [ -f ${i}]; then
echo ${i}
else continue
fi
done
まず、角かっこを閉じる前にスペースが必要です。また、ファイル名にスペースがある場合に備えて、変数を引用符で囲む必要があります。
for i in "${@}"; do
if [ -f "${i}" ]; then
echo "${i}"
else continue
fi
done
「else continue
」の代わりに配置する予定の何かのプレースホルダーでない限り、「」は不要ですcontinue
。
ファイル名にスペースが含まれていても機能する簡潔なソリューションを次に示します。
for i
do
test -f "$i" && echo "$i"
done
for ステートメントはコマンド ライン引数を想定しているため、それ以上入力する必要がないことに注意してください。test コマンドは、if .. then .. fi の短縮形です。
-fは、${i}が通常のファイルであることを確認します。