5

私はbashスクリプトでfindコマンドを次のように使用しています

for x in `find ${1} .....`;
do
    ...
done

ただし、スクリプトへの入力が存在しないファイル/ディレクトリである場合、どのように処理すればよいですか? (つまり、そのときにメッセージを出力したい)

-d と -f を使用しようとしましたが、問題があるのは ${1} が "." の場合です。また ".."

入力が存在しないものである場合、for ループには入りません。

ありがとう!

4

4 に答える 4

2

Bash はすぐに使用できるようにします。

if [ ! -f ${1} ];
then
    echo "File/Directory does not exist!"
else
    # execute your find...
fi
于 2013-01-23T03:59:45.493 に答える
0

Bash スクリプトは少し奇妙です。実装前に練習します。しかし、このサイトはそれをうまく分解しているようです。

ファイルが存在する場合、これは機能します:

if [ -e "${1}" ]
then
  echo "${1} file exists."
fi

ファイルが存在しない場合、これは機能します。「!」に注意してください。「ない」を示すには:

if [ ! -e "${1}" ]
then
  echo "${1} file doesn't exist."
fi
于 2013-01-23T03:56:16.937 に答える
0

検索を変数に割り当て、変数に対してテストします。

files=`find ${1} .....`
if [[ "$files" != “file or directory does not exist” ]]; then
  ...
fi
于 2013-01-23T03:59:06.883 に答える
0

次のようなことを試すことができます:

y=`find . -name "${1}"`
if [ "$y" != "" ]; then
  for x in $y; do
    echo "found $x"
  done
else
  echo "No files/directories found!"
fi
于 2013-01-23T04:07:02.167 に答える