1.我的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 的 $0 呢?
$0 默认文件名。
另一个问题。我想在 awk 中使用 var $0,但在 shell 文件中使用另一个 $variable。我应该怎么办?
$ cat hi.sh
#!/bin/bash
strings="sdsf sdsda sdsadx"
num=9
echo \`awk '{print substr($0,0,$num)}' <<< $strings\`
最佳答案
您脚本的问题是在 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
关于linux - 如何在 shell 文件中使用 awk 的 $0 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44693495/