Mac 打开新的终端窗口并执行命令

Mac 打开新的终端窗口并执行命令

我正在尝试运行该脚本,但我无法正确地将命令传递到新的终端窗口。

该脚本接受一个参数,即视频文件,然后提示用户选择要输出的视频大小。从那里我希望它打开一个新的终端窗口并执行 ffmpeg 命令。

#!/bin/sh

input=$1
CD="CocoaDialog.app/Contents/MacOS/CocoaDialog"

# Get width from user
width=`$CD standard-inputbox --title "Please Enter Video Width" | sed -n '1!p'`
proceed=`$CD ok-msgbox --text "You entered $width press ok to proceed"`

if [ $proceed == 1 ]
then
  # Build MP4 video creation command
  cmd_to_run="./ffmpeg -i \""$input"\" -vf scale=$width:-1 -strict -2 -c:a aac -b:a 256k -b:v 4096k -vcodec libx264 -crf 22 -preset slow -threads 0 \""${input%.*}.converted.$width.mp4"\""

  # Execute command in new terminal window
  osascript -e "tell application \"Terminal\" to do script \"$cmd_to_run\""
else
    echo "You selected cancel..."
fi

任何帮助将不胜感激

答案1

将命令的变量替换放在单引号中:

input="/path/too/foo bar.mp4"
cmd_to_run="./ffmpeg -i '$input' …
osascript -e "tell application \"Terminal\" to do script \"$cmd_to_run\""

否则参数将被过早替换。

相关内容