配列を使用する
options=( -option1 x -option2 y )
options[1]=oldValue
options[3]=var2
run "${options[@]}" "$OTHERSTUFF"
options[1]=newValue
run "${options[@]}" "$OTHERSTUFF"
配列に直接割り当てたくない場合は、関数を使用して、厄介な詳細をカプセル化します。
initialize_options() { options=( -option1 x -option2 y ); }
set_first() { set_value 1 "$1"; }
set_second() { set_value 3 "$1"; }
set_value() { option[$1]="$2"; }
initialize_options
set_first oldValue
set_second var2
run "${options[@]}" "$OTHERSTUFF"
set_first newValue
run "${options[@]}" "$OTHERSTUFF"
私に思いついたばかりです-これはもっと簡単かもしれません:
do_run() { run -option1 "$1" -option2 "$2" "$OTHERSTUFF"; }
VAR1=oldValue
VAR2=var2
do_run "$VAR1" "$VAR2"
VAR1=newValue
do_run "$VAR1" "$VAR2"