如果我使用“/Volumes/MEDIA/SERVER/SYNC.sh”在终端中运行它,我有一个.sh脚本可以正常工作 但我无法在AppleScript编辑器中使用以下命令运行它: 做shell脚本“/Volumes/MEDIA/SERVER/SYNC.sh” 也尝试了上面的bash在前面,sh在前面。
shell脚本(SYNC.sh)
#!/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"'
正在运行。脚本通过终端运行,只有在同步完成后才会出现。
感谢您的帮助!
答案 0 :(得分:0)
你自己安装了lftp吗?我没有Mac方便检查它是否默认在Mac OS X中。如果您安装了它,那么它可能不在AppleScript环境的PATH中,并且bash脚本在从那里运行时找不到它。
如果是这种情况,那么您必须:
我认为我会选择选项1.选项2过度杀伤,其他时候更有可能对其他事情产生不利影响。
PS。如果您不知道'lftp'的安装位置,请在终端中键入“which lftp”。