AppleScript won';t按终端中的方式运行shell脚本
我有一个.sh脚本,如果我在终端中使用“/Volumes/MEDIA/SERVER/SYNC.sh”运行它,它可以正常工作 但我无法使用以下命令在AppleScript编辑器中运行相同的命令: 执行shell脚本“/Volumes/MEDIA/SERVER/SYNC.sh” 还尝试了前面的bash和sh shell脚本(SYNC.sh) 他跑了。脚本在终端上运行,仅在同步完成后出现AppleScript won';t按终端中的方式运行shell脚本,applescript,Applescript,我有一个.sh脚本,如果我在终端中使用“/Volumes/MEDIA/SERVER/SYNC.sh”运行它,它可以正常工作 但我无法使用以下命令在AppleScript编辑器中运行相同的命令: 执行shell脚本“/Volumes/MEDIA/SERVER/SYNC.sh” 还尝试了前面的bash和sh shell脚本(SYNC.sh) 他跑了。脚本在终端上运行,仅在同步完成后出现 谢谢你的帮助 您自己安装了lftp吗?我手边没有Mac电脑来检查默认情况下它是否在MacOSX中。如果您安装了它,
谢谢你的帮助 您自己安装了lftp吗?我手边没有Mac电脑来检查默认情况下它是否在MacOSX中。如果您安装了它,那么它可能不在AppleScript环境的路径中,并且bash脚本在从那里运行时找不到它 如果是这种情况,则您必须:
另外,如果您不知道“lftp”安装在哪里,请在终端中键入“哪个lftp”。在脚本开头,这真的是您的用户名、密码和主机吗?:-)您如何知道“mv”线路没有运行?或者是“rm”线等等?我真是太蠢了我不知道,但lftp的同步也不是。如果我在终端中运行它,它会立即拾取任何新文件。好的,这更有意义('mv'和'rm'如果运行成功,可能不会提供任何输出)。尝试完全限定“lftp”(根据我的回答)。我必须自己安装lftp。你的想法很有道理。所以我用它的完整路径替换了lftp,解决了我的问题,谢谢!我没有代表投票支持你的评论,一旦我有足够的代表,我会为你点击向上箭头。
#!/bin/bash
login="uhh"
pass="uhh"
host="uhh.com"
remote_dir='~/private/sync'
local_dir="/Volumes/MEDIA/_/SYNCING"
base_name="$(basename "$0")"
lock_file="/tmp/$base_name.lock"
trap "rm -f $lock_file" SIGINT SIGTERM
if [ -e "$lock_file" ]
then
echo "$base_name is running already."
exit
else
touch "$lock_file"
lftp -p 22 -u "$login","$pass" sftp://"$host" << EOF
set sftp:auto-confirm yes
set mirror:use-pget-n 5
mirror -c -P5 --Remove-source-files --log="/Volumes/MEDIA/SERVER/LOGS/$base_name.log" "$remote_dir" "$local_dir"
quit
EOF
# MOVE FINISHED FILES INTO DIRECTORY FOR CONVERSION
mv /Volumes/MEDIA/_/SYNCING/movies/* /Volumes/MEDIA/SEEDBOX/MOVIES
mv /Volumes/MEDIA/_/SYNCING/tvshows/* /Volumes/MEDIA/SEEDBOX/TVSHOWS
mv /Volumes/MEDIA/_/SYNCING/books/* /Volumes/MEDIA/SEEDBOX/BOOKS
mv /Volumes/MEDIA/_/SYNCING/music/* /Volumes/MEDIA/SEEDBOX/MOVIES
# SHOW COMPLETED NOTIFICIATION
osascript -e 'display notification "Sync completed" with title "SEEDB0X"'
rm -f "$lock_file"
trap - SIGINT SIGTERM
exit
fi
osascript -e 'display notification "Sync completed" with title "SEEDB0X"'