【发布时间】:2020-08-09 19:39:52
【问题描述】:
相反有一个很好的答案pass several variables from AppleScript to Shell Script,但是当有两个或多个变量/参数和/或一个 bash 函数时,我找不到相反的全面答案。
在 Automator 中,我尝试像这样传递变量:运行 AppleScript > 运行 Shell 脚本 > 运行 AppleScript。
- 运行 AppleScript: 将 URL 作为参数传递
-
运行 Shell 脚本: 使用
"$@"作为该参数
/bin/bash serial=$(($RANDOM % 10000)) /usr/local/bin/ffmpeg -i "$@" -c copy bsf:a aac_adtstoasc "/Path/to/file/movie_$serial.mp4" 2>&1 $! exit 0
-
运行 AppleScript: 这是我需要从上面的 Run Shell Script 中获取
stdout和最后执行进程的 PIDffmpeg的地方。我似乎什么也得不到。我已经尝试添加一个自动机“存储变量”,但它没有收到。
使用 AppleScript 的 Do Shell Script 命令我无法让 serial=$(($RANDOM % 10000)) 在文件名 movie_$serial.mp4 中实际输入序列号。文件名按字面意思输出为“movie_$serial.mp4”,而不是“movie_1234.mp4”。
serial=$(($RANDOM % 10000)) 在终端和运行 Shell 脚本中完美运行。不知道我缺少什么使它与“Do Shell Script”一起工作。
do shell script "/bin/bash serial=$(($RANDOM % 10000)); /usr/local/bin/ffmpeg -i " & link_ & ffmpegOpt & "'" & sPath & "$serial.mp4" & "'"
它为“do shell script”调用返回以下内容:
"/bin/bash serial=$(($RANDOM % 10000)); /usr/local/bin/ffmpeg -i urlofmovie -c copy -bsf:a aac_adtstoasc '/Path/to/file/movie_$serial.mp4'"
当使用ffmpeg命令行路径时,保存路径必须用引号引起来。
【问题讨论】:
标签: bash shell applescript automator