ソースを使用して別のファイル内で別のファイルを実行する方法について読みました。
source ./filename
しかし、コマンドのパラメータでこれを実行したいのですが。
コマンドは次のように実行されます。
command \
-argument \
-argument \
source ./file
-argument \
...
このファイルには、デフォルトで次の追加パラメータセットが含まれています。
-argument \
-argument \
どうすればいいですか?そのまま実行すると、コマンドが失敗します。
答え1
デフォルトでは、コンテンツはfilename
パラメータとして必要です。パラメータにスペースやワイルドカード演算子がない場合は、これを簡単に実行できます。
command \
-argument \
-argument \
$(cat ./file) \
-argument \
...
パラメータに改行やその他の文字が含まれていない場合は、その文字を区切り文字として使用してパラメータリストを設定できます。
#! /bin/bash
args=()
while IFS= read -r arg
do
args+=("$arg")
done < filename
command \
-argument \
-argument \
"${args[@]}" \
-argument \
...
パラメータが含まれていない場合は、|
次のことができます。
while IFS= read -d'|' -r arg
ファイルには以下が含まれます。
-arg1 something|-arg2
something else|-arg3 ...
答え2
command \
-argument \
-argument \
$(cat ./file) \
-argument \
...
する
-argument
-argument
または
-argument -argument
のように./file
。二重引用符なしでそのまま使用すると、シェルはそれを分割します$IFS
(デフォルトはタブ、改行、スペース)。$(cat ./file)
スラッシュを削除する必要がない別のオプションは、文字列を構成してからeval
それを構成することです。