此脚本从 Bash 但不是从 Automator 运行

This script runs from Bash but not from Automator

我正在使用 automator 为 finder 创建一个服务。该服务只有一项:"run shell script" 脚本是这样的:

currentDirectory=$(pwd)


for f in "$@"; do

  DIRNAME="$(dirname "$f")"

  export width=$( mdls "$f"  | grep kMDItemPixelWidth | tail -n1 | cut -d= -f2 )
  export height=$( mdls "$f" | grep kMDItemPixelHeight | tail -n1 | cut -d= -f2 )

  oneWidth=$((width / 3)) 
  oneHeight=$((height / 3))

  twoWidth=$((umWidth * 2 ))
  twoHeight=$((umHeight * 2 ))

  IFS='@3x' read -ra NAMES <<< "$f"    #Convert string to array

  basename=${NAMES[0]}
  extension="${f##*.}"

  fullnameOne=${NAMES[0]}.$extension
  fullnameTwo=${NAMES[0]}@2x.$extension

  sips -z "$oneWidth" "$oneHeight" "$f" --out "$DIRNAME"/"$fullnameOne"
  sips -z "$twoWidth" "$twoHeight" "$f" --out "$DIRNAME"/"$fullnameTwo"

done

想法是这样的:

  1. 我右击一堆名称包含@3x的图片,比如file@3x.png、ball@3x.jpg等
  2. 我希望脚本生成文件的 @2x@1x 版本,将它们重命名为 file@2x.png、ball@2x.jpg、file.png和 ball.jpg 分别。
  3. 脚本必须遵守格式。如果文件为 PNG,则输出应为 PNG,JPG 也应如此。

您在上面看到的这个脚本从终端运行,而不是从自动化器运行。在 automator 上,脚本只生成一个名为 Users.

的文件

怎么了?

What is wrong?

可能是脚本的参数。为了检验这个假设,添加

 printf '<%s>\n' "$@" >$HOME/debug.out

currentDirectory=$(pwd) 之后。

如果这没有帮助,还添加 set -x 并将 stderr 重定向到您可以找到它的地方。