我正在尝试在Debian机器上运行BASH脚本。如果我之前复制到隐藏.sh
文件的mac地址与机器的实际MAC地址匹配,那么脚本应该在每次启动时运行(所以我将/etc/init.d
文件放在.mac.txt
中)或者如果.mac.txt
文件存在,则机器可以启动。如果其中一个条件不正确,机器应该关闭。
这是我的剧本:
#!/bin/bash
output="'cat /root/.mac.txt'";
mac="'/sbin/ifconfig | grep 'eth0' | tr -s ' ' | cut -d ' ' -f5'"
if ["$mac" = "$output" ] || [ -f /root/.mac.txt]
then
echo "Server will start"
else
shutdown -h now
fi
如果mac地址不正确,则机器会关闭,但如果我删除了.mac.txt
文件则不然。我是在做一些逻辑或语法错误吗?
答案 0 :(得分:0)
您正在执行逻辑或(||
),将其更改为和(&&
)并且它应该有效。
答案 1 :(得分:0)
问题在于你的间距。 Bash在白色空间非常特别。我刚刚在我的服务器上进行了测试,它的工作原理如下:
if [ "$mac" = "$output" ] || [ -f /root/.mac.txt ]
...
[
和"$mac"
之间需要一个额外的空格,而.txt
和]
之间需要一个额外的空格