私は次のようなファイル名を持っています
/etc/auto.abc on server 1
/etc/auto.def on server 2
/etc/auto.ghi on server 1
私はすべてのサーバーに対して単一のスクリプトを作成しており、その中でファイルをcatしたいと思っています。
例:cat /etc/auto.abc
または/etc/auto.def
または/etc/auto.ghi
。存在するファイルを取得できるはずです。
ありがとう、
ファイルに対して操作を実行する前に、スクリプトを使用してファイルの存在を確認してみませんか?
#!/bin/bash
if test -f "/etc/auto.def"; then cat /etc/auto.def;
Elif test -f "/etc/auto.ghi"; then cat /etc/auto.ghi;
Elif test -f "/etc/auto.abc"; then cat /etc/auto.abc;fi
出典:
http://www.shellhacks.com/en/HowTo-Check-If-a-File-Exists
http://www.thegeekstuff.com/2010/06/bash-if-statement-examples/
このようなもの:
if [[ $(find . -name "auto*" -type f -maxdepth 1 -printf '\n' | wc -l) -eq 1 ]]
then
cat auto*
else
echo there are more files that match 'auto*'
fi
-printf '\n'
は、改行を含むファイル名を正しく処理するためにあります( この回答 を参照)。 else
では、auto*
パターンに一致するファイルが複数ある場合に状況を処理する必要があります。ここで何をするかはあなたの決定です。
ファイルグロブ の使用を検討しましたか?
最も寛容な方法は次のとおりです。
cat /etc/auto*
しかし、あなたの場合は次のようになります。
cat /etc/auto.???
もちろん、ifそのグロブに一致する他の不要なファイルがある可能性があります。またはif3つのファイルのうち複数が存在する可能性があります(1つだけが必要です)。これは、これらすべての可能性を考慮しているわけではありません。しかし、それは確かに最も単純な方法です。