argがシェルで有効なファイル名であるかどうかを検証するには?
-
11-09-2019 - |
質問
私は、これはそれを行うための正しい方法で、引数が有効なファイル名であるかどうかを確認する必要がありますか?私はいくつかのミスをインライン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
ステートメントは、コマンドライン引数を想定しているため、より多くのを入力する必要がないことに注意してください。 testコマンドは、if ...そして.. Fiの
の短い方法です-fは、$ {私}は通常のファイルであることを確認します。
所属していません StackOverflow