次のBashコードがあります。
function suman {
if test "$#" -eq "0"; then
echo " [suman] using suman-Shell instead of suman executable.";
suman-Shell "$@"
else
echo "we do something else here"
fi
}
function suman-Shell {
if [ -z "$LOCAL_SUMAN" ]; then
local -a node_exec_args=( )
handle_global_suman node_exec_args "$@"
else
NODE_PATH="${NEW_NODE_PATH}" PATH="${NEW_PATH}" node "$LOCAL_SUMAN" --suman-Shell "$@";
fi
}
suman
コマンドが引数なしでユーザーによって実行されると、これがヒットします。
echo " [suman] using suman-Shell instead of suman executable.";
suman-Shell "$@"
私の質問は-「$ @」値に引数を追加するにはどうすればよいですか?私は単に次のようなことをする必要があります:
handle_global_suman node_exec_args "--suman-Shell $@"
明らかにそれは間違っていますが、どうすればいいのかわかりません。私は何ですかnot探しています-
handle_global_suman node_exec_args "$@" --suman-Shell
問題はそれです handle_global_suman
で動作します $1
および$2
と私が作った場合--suman-Shell
から$3
、それから私は他のコードを変更する必要があり、むしろそれを避けたいです。
予備回答:
local args=("$@")
args+=("--suman-Shell")
if [ -z "$LOCAL_SUMAN" ]; then
echo " => No local Suman executable could be found, given the present working directory => $PWD"
echo " => Warning...attempting to run a globally installed version of Suman..."
local -a node_exec_args=( )
handle_global_suman node_exec_args "${args[@]}"
else
NODE_PATH="${NEW_NODE_PATH}" PATH="${NEW_PATH}" node "$LOCAL_SUMAN" "${args[@]}";
fi
引数を配列に入れて、配列に追加します。
args=("$@")
args+=(foo)
args+=(bar)
baz "${args[@]}"
handle_global_suman node_exec_args --suman-Shell "$@"