【发布时间】:2021-07-29 11:23:05
【问题描述】:
我有以下情况,其中 exec 和 eval 将以不同的方式处理作为参数传递的变量。 在这里,eval 似乎输出了一些预期的东西。
但是除了使用它还有其他选择吗?
$ cat arg.sh
#!/bin/bash
eval ./argtest $*
$ ./arg.sh "arg1 'subarg1 subarg2'"
Args: 2
Arg1: arg1
Arg2: subarg1 subarg2
但同时,如果我使用 exec 而不是 eval 调用,单引号不会得到尊重。
$ ./arg.sh "arg1 'subarg1 subarg2'"
Args: 3
Arg1: arg1
Arg2: 'subarg1
Arg3: subarg2'
【问题讨论】:
-
为什么不只是
./argtest "$@"和./arg.sh arg1 'subarg1 subarg2'? -
achieve variable expansion你确定你想要变量扩展吗?您的示例显示了引号解析或解释,没有变量扩展......
标签: bash shell command-line-arguments