--build-arg
一部のキー/値ペア(build.argsファイル)を使用して、busyboxシェルに引数文字列を作成する必要があります。
スクリプトファイル
#!/bin/sh
one=$1
two=$2
shift
while IFS= read -r line; do
set "$@" --build-arg "$line"
done < "build.args"
echo "$@"
ビルドパラメータ
ONE=first
TWO=second
実行sh script.sh foo bar
(例:スクリプトには2つの引数が必要です)は、build.argsの内容を読み取り、キーと値のペアを--build-arg
引数として追加し、結果文字列を出力する必要があります。これが私が期待するものです:
--build-arg ONE=first --build-arg TWO=second
しかし、私のスクリプトを通して私は
bar --build-arg ONE=first --build-arg TWO=second
asはbar
スクリプト呼び出しの2番目のパラメータとして渡されます。
答え1
bar
ループ前の作業$1
の後に来るものなのでそこに入ります。shift
2つの位置パラメータをオフにするには、を使用しますshift 2
。ただし、before loopingに置き換えてshift
位置引数のリストを消去する方が安全ですset --
。これにより、正しい数のパラメータを提供するためにユーザーに依存する必要がなくなります。一部のシェルはリストにある値よりも多くの値を削除しようとすると診断メッセージを発行します"$@"
。
また、この場合と通常位置引数を設定するときに誤ってシェルオプションを設定したり、無効なオプションで呼び出すのを防ぐために、通常の代わりにset --
inを使用する必要があります。set
set
set -- "$@" --build-arg "$line"