考虑将一组参数传递给函数,例如:
awk -vv1="Hello there" -vv2=Bye 'BEGIN {print v1,v2}'
请注意,第一个参数包含一个空格。输出是:
Hello there Bye
现在,我尝试将参数存储在变量中。首先考虑第一个参数中没有空格的情况:
arg="-vv1=Hello -vv2=Bye"
awk $arg 'BEGIN {print v1,v2}'
这工作正常。现在在变量中插入空格:
arg="-vv1='Hello there' -vv2=Bye"
awk $arg 'BEGIN {print v1,v2}'
这给出了错误消息:
awk: there'
awk: ^ invalid char ''' in expression
这里发生了什么?
更新
根据到目前为止的评论,我想改进我的问题:考虑arg
另一个 shell 脚本的输出的情况。例如,假设这genArg
是一个打印字符串的 shell 脚本:
"-vv1='Hello there' -vv2=Bye"
到终端。然后arg
被收集(在脚本中)像
arg=$(genArg)
接下来我想awk
用给定的参数调用:
awk $arg 'BEGIN {print v1,v2}'