我想存储的awk命令在一个变量(命令,而不是结果).我的目标是稍后在脚本中使用该变量,使用不同的输入.例如:
cmd=$(awk '/something/ {if ...} {...} END {...}')
$cmd $input
Run Code Online (Sandbox Code Playgroud)
我试图用$()(就像在例子中)存储命令,也用backticks...但我无法实现它.
我感谢帮助或任何建议:)
不要这样做,使用函数而不是变量,它是存在的函数:
$ cmd() { awk -v x="$1" 'BEGIN{print x}'; }
$ cmd foo
foo
$ cmd bar
bar
Run Code Online (Sandbox Code Playgroud)
一个不同的例子:
$ cat file1
a
b
$ cat file2
c
d
e
$ cmd() { awk '{print FILENAME, $0}' "$1"; }
$ cmd file1
file1 a
file1 b
$ cmd file2
file2 c
file2 d
file2 e
Run Code Online (Sandbox Code Playgroud)
忘记反引号和括号。您只想存储awk脚本本身
cmd='/something/ {if ...} {...} END {...}'
awk "$cmd" $input
Run Code Online (Sandbox Code Playgroud)