考虑将一些参数集传递给函数,例如:
awk -vv1="Hello there" -vv2=Bye 'BEGIN {print v1,v2}'
Run Code Online (Sandbox Code Playgroud)
请注意,第一个参数包含空格.输出是:
Hello there Bye
Run Code Online (Sandbox Code Playgroud)
现在,我尝试将参数存储在变量中.首先考虑第一个参数中没有空格的情况:
arg="-vv1=Hello -vv2=Bye"
awk $arg 'BEGIN {print v1,v2}'
Run Code Online (Sandbox Code Playgroud)
这很好用.现在在变量中插入空格:
arg="-vv1='Hello there' -vv2=Bye"
awk $arg 'BEGIN {print v1,v2}'
Run Code Online (Sandbox Code Playgroud)
它给出了错误消息:
awk: there'
awk: ^ invalid char ''' in expression
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?
根据到目前为止的评论,我想改进我的问题:考虑arg另一个shell脚本的输出的情况.例如,假设这genArg是一个打印字符串的shell脚本:
"-vv1='Hello there' -vv2=Bye"
Run Code Online (Sandbox Code Playgroud)
到终点站.然后arg收集(在脚本中)像
arg=$(genArg)
Run Code Online (Sandbox Code Playgroud)
接下来我想awk用给定的参数调用:
awk $arg 'BEGIN {print v1,v2}'
Run Code Online (Sandbox Code Playgroud)
使用数组:
arg=(-vv1="Hello there" -vv2=Bye)
awk "${arg[@]}" 'BEGIN {print v1,v2}'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2291 次 |
| 最近记录: |