我能够在单独的脚本上创建 if-elif-then-else 代码块并验证工作正常。但是,当我添加 UNTIL 或 WHILE 逻辑时,我得到了无效的响应。如果我手动创建了VALIDATE.txt文件,文件中包含“proceed”或“rollback” ,我不希望得到此响应 = “invalid operation”。请检查我下面的代码
脚本
#!/bin/bash
FILE=/Users/lagot/Documents/BASH-TEST/VALIDATE.txt
ACTION=`cat /Users/lagot/Documents/BASH-TEST/VALIDATE.txt >>/dev/null 2>&1`
while [ ! -f "$FILE" ]
do
echo "not exist"
sleep 60
done
if [ "${ACTION}" = "proceed" ];
then
echo "performing proceed"
rm -rf $FILE
elif [ "${ACTION}" = "rollback" ];
then
echo "performing rollback"
rm -rf $FILE
else
echo "invalid operation"
rm -rf $FILE
fi
直到脚本
#!/bin/bash
FILE=/Users/lagot/Documents/BASH-TEST/VALIDATE.txt
ACTION=`cat /Users/lagot/Documents/BASH-TEST/VALIDATE.txt >>/dev/null 2>&1`
until [ -f "$FILE" ]
do
echo "not exist"
sleep 60
done
if [ "${ACTION}" = "proceed" ];
then
echo "performing proceed"
rm -rf $FILE
elif [ "${ACTION}" = "rollback" ];
then
echo "performing rollback"
rm -rf $FILE
else
echo "invalid operation"
rm -rf $FILE
fi
我在一个单独的窗口上创建了 VALIDATE.txt 并检查了自己
lagot-pc:BASH-TEST lagot$ echo proceed >> VALIDATE.txt
lagot-pc:BASH-TEST lagot$ pwd
/Users/lagot/Documents/BASH-TEST
lagot-pc:BASH-TEST lagot$ cat /Users/lagot/Documents/BASH-TEST/VALIDATE.txt
proceed
如果我尝试创建VALIDATE.txt并在文件中回显“回滚” ,我也会收到无效响应“无效操作”而不是“执行继续”
lagot-pc:BASH-TEST lagot$ ./while-script.sh
not exist
not exist
not exist
not exist
not exist
invalid operation