ksh - 用空格传递参数

时间:2010-09-14 05:07:59

标签: parameters ksh spacing

我试图通过变量传递一个带有ksh空格的参数。

以下是一些示例代码来演示此问题。正如您将看到带有空格的参数后来被处理为两个变量 - 而不是我所追求的。

*更新 - 我没有复制并粘贴origianl问题中的所有代码。 **

param_test.sh的内容

#!/bin/ksh

echo "check 1"

param_string=${1}
param_string2=${2}

echo "check 2"

echo param_string = $param_string
echo param_string2 = $param_string2

echo "check 3"

call_param_test.sh的内容

#!/bin/ksh

param_test.sh 'a b' c

CMD="param_test.sh 'a b' c"

# CMD=param_test.sh
# CMD="${CMD} 'a b c'"


echo CMD is  $CMD

echo now running CMD
${CMD}

echo back to calling script

echo at end


Results of executing call_param_test.sh

check 1
check 2
param_string = a b
param_string2 = c
check 3
CMD is param_test.sh 'a b' c
now running CMD
check 1
check 2
param_string = 'a
param_string2 = b'
check 3
back to calling script
at end

谢谢,

2 个答案:

答案 0 :(得分:0)

我改变了这样的调用脚本

#param_test.sh 'a b' c

#CMD="./param_test.sh \'a b\' c"
CMD="./param_test.sh"
ARGS1="a b"
ARGS2=c

# CMD=param_test.sh
# CMD="${CMD} 'a b c'"


echo CMD is  $CMD  $ARGS

echo now running CMD
#${CMD}
#${CMD} "$ARGS1" ${ARGS2}

echo back to calling script

echo at end

由于args有空格,因此将其作为参数非常棘手(我希望有更好的方法)。 但上述工作即使不是一种有效的方法

答案 1 :(得分:0)

BashFAQ/050适用。通常,您应该尽量避免将命令放在变量中。如果你必须这样做,那么数组可能是要走的路:

# create an array
CMD=(param_test.sh 'a b' c)
# execute the command contained in the array
${CMD[@]}