Bash检查启动时文件是否存在

时间:2012-07-13 19:52:42

标签: bash

  

可能重复:
  Bash check if file exists on startup

我正在尝试在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文件则不然。我是在做一些逻辑或语法错误吗?

2 个答案:

答案 0 :(得分:0)

您正在执行逻辑或(||),将其更改为和(&&)并且它应该有效。

答案 1 :(得分:0)

问题在于你的间距。 Bash在白色空间非常特别。我刚刚在我的服务器上进行了测试,它的工作原理如下:

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

["$mac"之间需要一个额外的空格,而.txt]之间需要一个额外的空格