![awk 接受 cshell 中美元符号提供的变量](https://linux22.com/image/90704/awk%20%E6%8E%A5%E5%8F%97%20cshell%20%E4%B8%AD%E7%BE%8E%E5%85%83%E7%AC%A6%E5%8F%B7%E6%8F%90%E4%BE%9B%E7%9A%84%E5%8F%98%E9%87%8F.png)
在 c shell 脚本中,我试图将 bbb 传递给 awk sub,但显然它不起作用。
#!/bin/csh
set aaa=a
set bbb=b
#And I'm using it in awk sub
set ccc=`echo $aaa | awk '{sub("a",$bbb); print $0}'`
echo $ccc
但回声空洞,不知道为什么。
请注意,如果我将 $bbb 替换为“b”,那么它效果很好。
答案1
您必须将 shell 变量传递给awk
.要么与
set ccc=`echo $aaa | awk -v bb=$bbb '{sub("a",bb); print $0}'`
awk
引用 shell 变量时关闭并重新打开引用:
set ccc=`echo $aaa | awk '{sub("a",'$bbb'); print $0}'`