ソースコードからいくつかのソフトウェアを構築するには、多くの設定スイッチが必要です。
./configure --enable-ftp --with-gettext ...
必要なスイッチはすべて改行で区切られたテキストファイルにあります。たとえば、次のようになります。
--enable-ftp
--with-gettext
etc...
オプションを設定するためにテキストファイルを設定のパラメータとして渡す方法はありますか?それとも私が持っているオプションを切り取って貼り付ける別の方法がありますか?
編集する
$HOME
私はスイッチに変数を使用しているので、すべてのソリューションがそれに対応する必要があります。
答え1
$HOME
ファイルを拡張するには、envsubst
まず使用できます(これにより、すべての環境変数が拡張されます)。その後、結果を配列として読み取ることができます。zsh
args=(${(f)"$(< <(envsubst <infile))"})
またはbash
readarray -t args < <(envsubst <infile)
その後実行
./configure "${args[@]}"
または、tr
前の1行オプションを使用して結果をフォーマットし、./configure
次にパイプすることもできますsh
。
{ printf %s './configure '; tr '\n' ' ' <infile; } | sh
答え2
xargs
1つの方法は、stdinのスペースで区切られた文字列をコマンドライン引数に変換することを使用することです。ファイル名がswitches
次の場合:
xargs ./configure < switches
*
これは、または同じものを拡張しません$VAR
。 (編集のように)それを拡張したい場合は、いくつかの方法があります。簡単にコマンドを生成して渡すことができますsh
。
xargs printf '%s ' ./configure < switches | sh
またはがある場合、envsubst
変数(など${HOME}
)は拡張されますが、ファイルグローバル変数(*
)は拡張されません。
envsubst < switches | xargs ./configure