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

时间:2012-07-13 18:51:10

标签: bash

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

1 个答案:

答案 0 :(得分:2)

略有修改版本:

#!/bin/bash
macfile='/root/.mac.txt'
mac=$(/sbin/ifconfig | grep 'eth0' | tr -s ' ' | cut -d ' ' -f5)

# Shut down if file does not exist
if [ ! -f $macfile ]; then
    shutdown -h now
fi

# Verify MAC address against cached value
output=$(cat $macfile)
if [ "$mac" = "$output" ]; then
    echo "Server will start" 
else 
    shutdown -h now 
fi 

说明:

  • 在中读取之前测试文件是否存在
  • [”和“]”字符前后必须有空格
  • 运行子命令时,请使用$( ... )语法而不是反引号