道长 发表于 2020-11-30 11:35

Linux 脚本 if判断语句

rt 想问一下 Linux脚本 写的判断语句
我是想判断网卡配置文件里面的内容
```
if [['grep "#IPADDR=192.168.1.1" /etc/sysconfig/network-scripts/ifcfg-ens1']='#IPADDR=192.168.1.1']; then
sed -i 's/IPADDR=192.168.1.2/#IPADDR=192.168.1.2/g' /etc/sysconfig/network-scripts/ifcfg-ens1
sed -i 's/#IPADDR=192.168.1.1/IPADDR=192.168.1.1/g' /etc/sysconfig/network-scripts/ifcfg-ens1
fi
```
可是运行结果却是
line 6: [=#IPADDR=192.168.1.1]: No such file or directory

知心 发表于 2020-11-30 12:58

看报错信息好像是文件路径不对吧,你检查一下

testpassword 发表于 2020-11-30 13:17

本帖最后由 testpassword 于 2020-11-30 13:19 编辑

[ cmd ] 这样用,方括号里面的左右两边要加空格

还有就是 grep 这条命令执行的结果是个整数,如果你想拿到输出的数据,用 $(cmd)

njbb888 发表于 2020-11-30 13:33

本帖最后由 njbb888 于 2020-11-30 13:34 编辑

ls -l /etc/sysconfig/network-scripts/ifcfg-ens1

程序写的比较low,把if里面的判断,单独做一个变量。

ForGot_227 发表于 2020-11-30 13:48

ifconfig 看下你网卡名是不是 ens1

道长 发表于 2020-11-30 14:16

知心 发表于 2020-11-30 12:58
看报错信息好像是文件路径不对吧,你检查一下

单独使用 if里面的条件是能正常输出字符串的

道长 发表于 2020-11-30 14:17

ForGot_227 发表于 2020-11-30 13:48
ifconfig 看下你网卡名是不是 ens1

直接运行[]里面的内容是能运行的

ilavac 发表于 2020-11-30 14:18

if [ "`grep '#IPADDR=192.168.1.1' /etc/sysconfig/network-scripts/ifcfg-ens1`" = "#IPADDR=192.168.1.1" ]; then
sed -i 's/IPADDR=192.168.1.2/#IPADDR=192.168.1.2/g' /etc/sysconfig/network-scripts/ifcfg-ens1
sed -i 's/#IPADDR=192.168.1.1/IPADDR=192.168.1.1/g' /etc/sysconfig/network-scripts/ifcfg-ens1
fi

道长 发表于 2020-11-30 14:23

testpassword 发表于 2020-11-30 13:17
[ cmd ] 这样用,方括号里面的左右两边要加空格

还有就是 grep 这条命令执行的结果是个整数,如果你想拿 ...

就是要这样?
if [[ $'grep "#IPADDR=192.168.1.1" /etc/sysconfig/network-scripts/ifcfg-ens1' ]='#IPADDR=192.168.1.1' ]; then

道长 发表于 2020-11-30 14:54

ilavac 发表于 2020-11-30 14:18
if [ "`grep '#IPADDR=192.168.1.1' /etc/sysconfig/network-scripts/ifcfg-ens1` ...

请教一下你grep前面那个是啥负号
页: [1] 2
查看完整版本: Linux 脚本 if判断语句