使bash参数数组保持不变
我有一个bash脚本 fooA使bash参数数组保持不变,bash,Bash,我有一个bash脚本 fooA #!/bin/bash script_name=$1; script_params=$( echo $@ | awk '{ $1=""; print $0 }' ); bash /path/to/scripts/$script_name $script_params > /dev/stdout; 以及../scripts/目录中的另一个脚本fooB #!/bin/bash echo 1. $1 echo 2. $2 我的计划很简单: fooA fooB
#!/bin/bash
script_name=$1;
script_params=$( echo $@ | awk '{ $1=""; print $0 }' );
bash /path/to/scripts/$script_name $script_params > /dev/stdout;
以及../scripts/
目录中的另一个脚本fooB
#!/bin/bash
echo 1. $1
echo 2. $2
我的计划很简单:
fooA fooB "some sentence 1" "some sentence 2"
应产生:
请记住,
../scripts
目录中还有许多其他脚本,我如何更改fooA文件中的script_params=$(…)
行以在调用其他脚本时保留变量。@jm666的答案在没有其他约束的情况下可以正常工作。不过,为了完整起见,我将给出一个不会弄乱第一个脚本参数列表的版本:
#!/bin/bash
name="$1"
shift
"/path/to/script/$name" "$@"
#/bin/bash
script_name="$1"
script_params=( "${@:2}" )
bash /path/to/scripts/"$script_name" "${script_params[@]}" > /dev/stdout
或者您可以完全跳过变量:
#/bin/bash
bash /path/to/scripts/"$1" "${@:2}" > /dev/stdout
@如果没有额外的限制,jm666的答案将很有效。不过,为了完整起见,我将给出一个不会弄乱第一个脚本参数列表的版本:
#/bin/bash
script_name="$1"
script_params=( "${@:2}" )
bash /path/to/scripts/"$script_name" "${script_params[@]}" > /dev/stdout
或者您可以完全跳过变量:
#/bin/bash
bash /path/to/scripts/"$1" "${@:2}" > /dev/stdout