2017-06-08 4 views
1

私は、外部の 'source.txt'ファイルから引数を取得するbashスクリプトを持っています。 ソースファイルには、インスタンス(混合ファイルとディレクトリ)の10行の引数が含まれています。 1つの関数は、ソースファイル全体を使用する必要があります。私は$(<source.txt)でこれを達成し、それは正常に動作します。BASH:異なる関数の引数のソースファイルをフィルタする方法

一方、2番目の関数は部分的に同じ 'source.txt'ファイルを使用して、引数を正規表現などでフィルタリングする必要があります。

ソースファイル:

/etc/sysconfig/network-scripts/ 
/etc/ntp.conf 
/etc/localtime 
/etc/sysconfig/iptables-config 
/etc/resolv.conf 
/sbin/ifup-local 
/sbin/ifdown-local 
/usr/local/sbin 
/var/spool/cron/ 
/boot 

第二の機能は、再帰的にすべてのコンテンツのみ'^/etc/[a-z][A-Z]*'ソースを取る必要があります。

どうすればよいですか?

答えて

1

あなたは、単にこのように、それをgrepすることができます。

$(grep '^/etc/[a-z][A-Z]*'<source.txt) 

は、あなたの引数がいくつかのスペースや引用符を含めることが起こる場合は、サブシェルのアプローチ(コマンド置換は)あなたのため失敗することがありますことを、経由注意してください。

readarray -t args < <(grep '^/etc/[a-z][A-Z]*' source.txt) 
your_function "${args[@]}" 
+0

感謝を:このあなたの代わりにreadarray(マップファイル)を使用することができますを回避するには

。これだよ。 – faceless

関連する問題