相关疑难解决方法(0)

保留bash函数参数中的引号

我想要做的是,作为函数的输入,可以包括引号(单引号或双引号)和与该函数提供的行完全相同的回声.例如:

function doit {
   printf "%s " ${@} 
   eval "${@}"
   printf " # [%3d]\n" ${?}
}
Run Code Online (Sandbox Code Playgroud)

其中,给出以下输入

doit VAR=42
doit echo 'single quote $VAR'
doit echo "double quote $VAR"
Run Code Online (Sandbox Code Playgroud)

产量如下:

VAR=42  # [  0]
echo single quote $VAR  # [  0]
echo double quote 42  # [  0]
Run Code Online (Sandbox Code Playgroud)

所以变量扩展的语义就像我期望的那样得到保留,但是我无法得到提供给函数的行的确切格式.我想要的是doit echo 'single quote $VAR'结果echo 'single quote $VAR'.

我确信这与bash在传递给函数之前处理参数有关; 我只是想找个方法(如果可能的话).

编辑

所以我的目的是影响脚本的执行,同时提供执行的精确副本,可以用作诊断工具,包括每个步骤的退出状态.

虽然我可以通过做类似的事情获得上述所需的行为

while read line ; do 
   doit ${line}
done < ${INPUT}
Run Code Online (Sandbox Code Playgroud)

面对控制结构(即等) …

bash quotes arguments function

23
推荐指数
3
解决办法
3万
查看次数

标签 统计

arguments ×1

bash ×1

function ×1

quotes ×1