从Applescript do shell script
命令执行时,以下脚本按预期工作。
#!/bin/sh
sleep 10 &
#echo "hello world" > /tmp/apipe &
cpid=$!
sleep 1
if ps -ef | grep $cpid | grep sleep | grep -qv grep ; then
echo "killing blocking cmd..."
kill -KILL $cpid
# non zero status to inform launch script of problem...
exit 1
fi
但是,如果将睡眠命令(第2行)与if语句一起交换到(第3行)中的echo命令,则脚本在从Applescript运行时会阻塞但从终端命令行运行正常。
有什么想法吗?
编辑:我应该提到当消费者/阅读器连接到管道时,脚本可以正常工作。只有当没有人从管道中读取时它才会阻塞......答案 0 :(得分:0)
好的,以下就可以了。它基本上使用其jobid杀死了这份工作。因为只有一个,所以它是当前的工作%%
。
我很幸运,我遇到this answer或者它会让我发疯:)
#!/bin/sh
echo $1 > $2 &
sleep 1
# Following is necessary. Seems to need it or
# job will not complete! Also seen at
# https://stackoverflow.com/a/10736613/348694
echo "Checking for running jobs..."
jobs
kill %% >/dev/null 2>&1
if [ $? -eq 0 ] ; then
echo "Taking too long. Killed..."
exit 1
fi
exit 0