argがシェルで有効なファイル名であるかどうかを検証するには?

StackOverflow https://stackoverflow.com/questions/1449132

  •  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は、$ {私}は通常のファイルであることを確認します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top