如何在shell文件中使用awk的$ 0变量

时间:2017-06-22 07:58:14

标签: linux bash shell awk

1.my shell文件

 [root@node3 script]# cat hi.sh
 #!/bin/bash
 strings="sdsf sdsda sdsadx"
 echo `awk "{print substr($0,0,9)}"<<<$strings`

2.exe我的shell文件

[root@node3 script]# sh hi.sh 

awk: {print substr(hi.sh,0,9)}

awk:                 ^ syntax error

awk: 致命错误: 0 是 substr 的无效参数个数

那么如何在shell文件中使用awk&#39; $ 0

$ 0默认文件的名称。

另一个问题。我想使用关于awk的var $ 0但是shell文件中的另一个$变量。我该怎么办?

$ cat hi.sh 
#!/bin/bash 
strings="sdsf sdsda sdsadx" 
num=9 
echo \`awk '{print substr($0,0,$num)}' <<< $strings\`

1 个答案:

答案 0 :(得分:0)

您的脚本问题是在awk中使用双引号。用单引号替换它们。

当您使用双引号时,其中的$0将被视为脚本的第一个参数,在本例中为脚本名称hi.sh。如果使用单引号,则可以使用$0作为awk参数来显示整行。

此处不需要echo,您可以使用awk '{print substr($0,0,9)}' <<< $strings

$ cat hi.sh
#!/bin/bash
strings="sdsf sdsda sdsadx"
#echo `awk '{print substr($0,0,9)}' <<< $strings` --echo not needed
awk '{print substr($0,0,9)}' <<< $strings
$
$ sh hi.sh
sdsf sdsd