AppleScript不会像终端中那样运行shell脚本

时间:2016-11-08 00:16:21

标签: applescript

如果我使用“/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"'

正在运行。脚本通过终端运行,只有在同步完成后才会出现。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

你自己安装了lftp吗?我没有Mac方便检查它是否默认在Mac OS X中。如果您安装了它,那么它可能不在AppleScript环境的PATH中,并且bash脚本在从那里运行时找不到它。

如果是这种情况,那么您必须:

  1. 将路径完全限定为'lftp'(例如,“/ usr / local / bin / lftp”或其实际位置) 或
  2. 附加到AppleScript使用的PATH环境变量(或bash脚本的早期版本)。
  3. 我认为我会选择选项1.选项2过度杀伤,其他时候更有可能对其他事情产生不利影响。

    PS。如果您不知道'lftp'的安装位置,请在终端中键入“which lftp”。