!/空/配布

!/空/配布

現在のディレクトリでファイルを検索し、ファイルがディレクトリにある場合はtrueと評価し、ファイルが存在しない場合はfalseと評価する次のスクリプトがあります。

#!/bin/bash
printf "\n Please enter a file name "

read num3

if [ -f $num3 ]
then
printf "It is valid script "
else
printf "Invalid file name "
fi

スクリプトが作成された現在のディレクトリ以外のディレクトリにファイルがあるかどうかを確認できますか?

答え1

この試み

#!/bin/bash
printf "\n Please enter a file name "
read num3
printf "\n Please enter the path to check "
read path2check

if find $path2check -name $num3 -print -quit |
   grep -q '^'; then
  echo "the file exists!"
else
  echo "the file does not exist!"
fi

答え2

[ -f $num3 ]

何かに Split+glob 演算子を適用すると意味がありません$num3

[ -f "$num3" ]

このタイプのファイルを確認するために、パス$num3(で始まる場合は絶対パス/、そうでない場合は現在の作業ディレクトリへのパス)を確認します。定期的なまたは、一般ファイルへのシンボリックリンクです。

$num3指定されたディレクトリに関連付けられた通常のファイルであることを確認するには、次のようにします。

dir=/some/dir
[ -f "$dir/$sum3" ]

$sum3aで始まらない、または/含まないことを事前に確認することをお勧めします/

この方法は、$dir次の場合は/機能しません。//foo/bar経路を特別に扱うシステム。したがって、dir=/この場合を特別に処理する必要があるかもしれません。

case $dir in
  /) file=$dir$num3
  *) file=$dir/$num3
esac
[ -f "$file" ]

これが$num3相対パスであることを確認してください(定期的なファイル)現在のディレクトリにルートがあるディレクトリツリーで以下を使用することをお勧めしますzsh

files=(**/$num3(DN-.))
if (($#files > 0)); then
  echo "Success: $#files such file(s) found"
else
  echo Failure
fi

答え3

この例を考えてみましょう。私のcomplex_firmware.binイメージのどこかにファイルがある場合は追加したいと思います。

ステップ1:シェルからVSPA_IMAGE1 = / path / where / image / is / located / file.binをエクスポートします。ステップ2:スクリプトでファイルが見つかったら、それを追加して0x200000の場所にcomplex_firmware.binに追加します。

if [ -f "$VSPA_IMAGE1" ]; then
 printf "\nAdding $VSPA_IMAGE1 to composite image\n"
 dd if=$VSPA_IMAGE1 of=composite_firmware.bin seek=2048 bs=1024
else
 printf "\nWarning!!!! export VSPA_IMAGE1 location/path"
fi

答え4

findコマンドを使用してルートディレクトリを検索し、特定の名前のファイルが存在することを確認できます。ルートディレクトリで指定されたすべてのディレクトリとサブディレクトリを検索します。

!/空/配布

printf "\nファイル名を入力してください"

数字3を読む

if[ find / -type f -name $num3 2>/dev/null| wc -l-gt 0]; then echo "有効なスクリプトです。" else echo "無効なファイル名" fi

関連情報