linux – 无法在脚本中获取命令返回值
发布时间:2020-12-13 22:58:26 所属栏目:Linux 来源:网络整理
导读:我有以下脚本: serverip=$1 key=$2 linenumber=0 ##CHeck If server IP exists if grep -wq $serverip server; then echo "IP exists" linenumber=`awk '$0 ~ "$serverip" {print NR}' file` echo "$linenumber" fi 该文件包含: 192.168.18.2 testing123 3
我有以下脚本:
serverip=$1 key=$2 linenumber=0 ##CHeck If server IP exists if grep -wq $serverip server; then echo "IP exists" linenumber=`awk '$0 ~ "$serverip" {print NR}' file` echo "$linenumber" fi 该文件包含: 192.168.18.2 testing123 3 ./radius_adt.sh 192.168.18.2 nevis 不打印行号. awk命令在脚本外部工作. awk '$0 ~ "192.168.18.4" {print NR}' file output: 1 WHy是命令不在脚本内部运行并且其返回值被复制到linenumber中. 解决方法
这一行是问题所在:
linenumber=`awk '$0 ~ "$serverip" {print NR}' file` shell将无法在单引号内扩展$serverip,而awk将从字面上对待它.您应该像这样使用它将shell变量传递给awk: linenumber=$(awk -v serverip="$serverip" '$0 ~ serverip {print NR}' file) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |