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 に答える