使用FOR循环,当条件为真时结束

时间:2011-03-05 17:06:47

标签: macos bash

这是我的剧本:

 dir="/path/to/a/folder"


 for d in /Users/*
 do
 if [ -e $d/Desktop/*file ]
then

 $dir/./script.sh

 exit 

 else 

 /usr/bin/osascript <<-EOF

tell application "System Events"
    activate
    display dialog "Some text"
end tell

EOF
killall MyProgram
fi
done

目前,脚本在用户的桌面上查找一个唯一的文件,然后在文件存在时执行另一个脚本,否则它会杀死MyProgram,并为每个用户执行此操作。

我想要做的是,只有当文件在任何用户的桌面上都不存在时,脚本才会执行else中的命令,否则只要文件被找到,就会停止循环。脚本和脚本运行。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

使用另一个变量:

script_found="false"

for d in /Users/*
do
  if [ -e $d/Desktop/*file ]
  then
    script_found="true"
    $dir/./script.sh
    exit
  fi
done

if [ $script_found eq "false" ]
then
  # do other stuff
fi

编辑:实际上那是愚蠢的。如果您要在第一个脚本运行后退出,则根本不需要变量:

for d in /Users/*
do
  if [ -e $d/Desktop/*file ]
  then
    $dir/./script.sh
    exit # this terminates the whole script
  fi
done

# do other stuff