処理したいディレクトリにいくつかのファイルがあります。各ファイルには、NAMEの値を設定するために使用する必要のある名前があります。各ファイルには、何かする必要のあるIPアドレスのリストがあります。Bash While Read
#!/bin/bash
TMPDIR=/usr/customer/scripts/tmp
ip_targets(){
OLD_IFS=$IFS
while IFS= read -r file_name; do
log "This is: $file_name"
done < "$(find "$TMPDIR" -regex '.*.vms$')"
IFS=$OLD_IFS
}
ip_targets
私が実行している場合:
$find /usr/customer/scripts/tmp -regex '.*.vms$'
私が取得:IPのリストを持っている
/usr/customer/scripts/tmp/XXX.vms
/usr/customer/scripts/tmp/YYY.vms
、それぞれが。私は、スクリプトを実行する場合
は私が取得:
$ bash -x tester.sh
+ TMPDIR=/usr/customer/scripts/tmp
+ ip_targets
+ OLD_IFS='
'
++ find /usr/customer/scripts/tmp -regex '.*.vms$'
++ find /usr/customer/scripts/tmp -regex '.*.vms$'
tester.sh: line 4: /usr/customer/scripts/tmp/XXX.vms
/usr/customer/scripts/tmp/YYY.vms: No such file or directory
+ IFS='
'
は、まず私はパスなしでも拡張子を持つだけで、ファイルの名前を渡すことができるようにしたいと思います。
次のセクションを追加して、各ファイルの各IPにコマンドを発行できるようにしたいと考えています。
を使用して、ファイル名(プロセス置換)と仮想ファイルを作成でしたあなただけの '猫の/のようなものによって行うことができますユーザー/顧客/スクリプト/ tmp/* .vms |あなたのループを猿にする必要はありませんか? – JNevill
@JNevill - 私がしなければならない本当のことは単純ではないので、読んでいる間にそれを使う方法を実際に理解する必要があります。 – dross
'while IFS ='を使っているので、 'OLD_IFS'は必要ありません。 –