1

可能重复:
Bash 检查文件是否在启动时存在

我正在尝试在 Debian 机器上运行 BASH 脚本。如果我之前复制到隐藏文件的mac地址与机器的实际MAC地址匹配,或者如果文件存在机器可以启动,则脚本应该在每次启动时运行(所以我将.sh文件放入)。如果任一条件不成立,则机器应关闭。/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文件,它不会。我是否犯了一些逻辑或语法错误?

4

2 回答 2

0

您正在执行逻辑或 ( ||),将其更改为 and ( &&),它应该可以工作。

于 2012-07-13T20:45:58.277 回答
0

问题在于你的间距。Bash 在空白处非常特别。我刚刚在我的服务器上进行了测试,它是这样工作的:

if [ "$mac" = "$output" ] || [ -f /root/.mac.txt ]
...

你需要一个额外的空间["$mac"和另一个.txt之间]

于 2012-07-14T02:21:24.723 回答