У меня проблемы с удалением файла в скрипте bash. Я видел другой пост с той же проблемой, но ни одно из этих решений не решило мою проблему. Сценарий bash является контрольной проверкой OP5 и вызывает процесс Expect, который сохраняет временный файл на локальный диск, с которого читает сценарий bash. После того, как он прочитал файл и проверил его состояние, я хотел бы удалить временный файл. Я довольно новичок в написании сценариев, поэтому мой сценарий может быть не таким оптимальным, как мог бы быть. В любом случае это делает работу, кроме удаления файла, как только это будет сделано. Я выложу весь код ниже:
#!/bin/bash
#GET FLAGS
while getopts H:c:w: option
do
case "${option}"
in
H) HOSTADDRESS=${OPTARG};;
c) CRITICAL=${OPTARG};;
w) WARNING=${OPTARG};;
esac
done
./expect.vpn.check.sh $HOSTADDRESS
#VARIABLES
VPNCount=$(grep -o '[0-9]\+' $HOSTADDRESS.op5.vpn.results)
# Check if the temporary results file exists
if [ -f $HOSTADDRESS.op5.vpn.results ]
then
# If the file exist, Print "File Found" message
echo Temporary results file exist. Analyze results.
else # If the file does NOT exist, print "File NOT Found" message and send message to OP5
echo Temporary results file does NOT exist. Unable to analyze.
# Exit with status Critical (exit code 2)
exit 2
fi
if [[ "$VPNCount" > $CRITICAL ]]
then
# If the amount of tunnels exceeds the critical threshold, echo out a warning message and current threshold and send warning to OP5
echo "The amount of VPN tunnels exceeds the critical threshold - ($VPNCount)"
# Exit with status Critical (exit code 2)
exit 2
elif [[ "$VPNCount" > $WARNING ]]
then
# If the amount of tunnels exceeds the warning threshold, echo out a warning message and current threshold and send warning to OP5
echo "The amount of VPN tunnels exceeds the warning threshold - ($VPNCount)"
# Exit with status Warning (exit code 1)
exit 1
else
# The amount of tunnels do not exceed the warning threshold.
# Print an OK message
echo OK - $VPNCount
# Exit with status OK
exit 0
fi
#Clean up temporary files.
rm -f $HOSTADDRESS.op5.vpn.results
Я пробовал следующие решения:
Создайте отдельную переменную с именем TempFile, которая определяет файл. И укажите это в команде rm.
Я попытался создать другой оператор if, похожий на тот, который я использую, чтобы убедиться, что файл существует, и затем найти имя файла.
Я попытался добавить полное имя файла (без переменных, просто текст файла)
Я могу:
- Удалите файл, используя полное имя как в отдельном скрипте, так и непосредственно в CLI.
Есть ли в моем скрипте что-то, что блокирует файл, который мешает мне удалить его? Я не уверен, что попробовать дальше.
Заранее спасибо!