forループ(* .txtのf)は、*。txtファイルが存在しない場合にエラーをスローします


1

次のような小さなbashスクリプトがあります。

#!/bin/sh
for f in ./*.txt
do
 f=$(basename $f)
 echo "Processing $f"
 scp somewhere
 mv $f done/`basename $f`
done

これは完全に機能していますが、ファイルがなくなるとすぐにこのエラーがスローされます:*.txt: No such file or directory なぜループに入るのか、どのようにこれを行うことができるのか疑問に思っています(おそらく新しいifなしで?)

回答:


1

*.txtファイルがない場合、文字列はそのまま展開されず、ループに入ります。それを防ぐには、nullglobオプションを設定します。

shopt -s nullglob
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.