私はbashシェルを使用しています。ファイルパスを表す配列があります
MY_FILES=(/path/to/file1 /tmp/abc.txt /tmp/test.sh /path/to/file2 /path/to/file3 /tmp/abc.txt)
ファイルシステムに実際に存在するパスを使用して新しい要素の配列をどのように形成しますか?
ベストアンサー1
MY_FILES=(/path/to/file1 /tmp/abc.txt /tmp/test.sh /path/to/file2 /path/to/file3 /tmp/abc.txt)
existing=()
for pathname in "${MY_FILES[@]}"; do
if [ -e "$pathname" ]; then
existing+=( "$pathname" )
fi
done
上記のコマンドは、existing
ファイルシステムの既存の名前に対応する配列のエントリを含む新しい配列を作成します。MY_FILES
これは配列内の項目を繰り返し、testを使用して各要素を順番にテストすることによってこれを行います-e
。本物与えられたパス名が存在する場合。現在のパス名が存在する場合は、配列の末尾に新しい要素として追加されますexisting
。
また、各名前が次のようになっていることを確認したい場合一般ファイル、-e
テストをテストに変更します-f
。