【发布时间】:2016-03-16 05:05:47
【问题描述】:
我有以下 2 个脚本:
main.sh:
#!/bin/bash
ARG_WITH_SPACES="this is a value with spaces"
COMPOSITE_ARGS="-p $ARG_WITH_SPACES"
echo "main.sh will run:"
echo " ./child.sh $COMPOSITE_ARGS"
./child.sh $COMPOSITE_ARGS
和child.sh:
#!/bin/bash
echo "child.sh received:"
echo " 1: $1"
echo " 2: $2"
如果我运行main.js,我会得到:
main.sh will run:
./child.sh -p "this is a value with spaces"
child.sh received:
1: -p
2: "this
我试图理解为什么child.sh 中的$2 是"this 而不是this is a value with spaces。我想要实现的是通过参数通过多个脚本传递带有空格的值,而我没有得到正确的引用。
删除来自
COMPOSITE_ARGS的转义引用对我来说毫无意义,因为这会产生拆分。在
$COMPOSITE_ARGS周围加上引号是没有意义的,因为这会将-p和"this is a value with spaces"合并为一个参数。
有什么想法吗?我想要实现的是:
main.sh will run:
./child.sh -p "this is a value with spaces"
child.sh received:
1: -p
2: this is a value with spaces
【问题讨论】:
标签: bash command-line-arguments