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 看报错信息好像是文件路径不对吧,你检查一下 本帖最后由 testpassword 于 2020-11-30 13:19 编辑
[ cmd ] 这样用,方括号里面的左右两边要加空格
还有就是 grep 这条命令执行的结果是个整数,如果你想拿到输出的数据,用 $(cmd) 本帖最后由 njbb888 于 2020-11-30 13:34 编辑
ls -l /etc/sysconfig/network-scripts/ifcfg-ens1
程序写的比较low,把if里面的判断,单独做一个变量。
ifconfig 看下你网卡名是不是 ens1
知心 发表于 2020-11-30 12:58
看报错信息好像是文件路径不对吧,你检查一下
单独使用 if里面的条件是能正常输出字符串的 ForGot_227 发表于 2020-11-30 13:48
ifconfig 看下你网卡名是不是 ens1
直接运行[]里面的内容是能运行的 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 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 ilavac 发表于 2020-11-30 14:18
if [ "`grep '#IPADDR=192.168.1.1' /etc/sysconfig/network-scripts/ifcfg-ens1` ...
请教一下你grep前面那个是啥负号
页:
[1]
2