保持bash参数数组intack

时间:2011-06-15 01:03:54

标签: 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 "some sentence 1" "some sentence 2"

应该产生:

  
      
  1. 一句话1
  2.   
  3. 一句话2
  4.   

使用我当前的脚本,我会得到

  
      
  1. 一些
  2.   
  3.   

因为从 fooA 调用 fooB 时未保留双引号。

请记住.../scripts目录中有许多其他脚本,如何更改 fooA 文件中的script_params=$(...)行以在调用其他脚本时保留变量。< / p>

2 个答案:

答案 0 :(得分:2)

#!/bin/bash
name="$1"
shift
"/path/to/script/$name" "$@"

答案 1 :(得分:2)

如果没有其他限制,

@ 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