通过Automator中的终端复制文件



因此,以下问题似乎是在Automator中引起的,但我不能确定(我会发布图像,但我没有足够的点数):

我有一个Automator服务,它的第一个操作是转到~/Desktop/D53_C71J_C的"获取指定的查找器项目"工具。下一个操作是包含的"运行外壳脚本"

PATH="$@"
echo "Path: $PATH"
cd "$PATH"
for f in *;
do
    echo "f: $f"
    CAT="$PATH/$f"
    echo "CAT: $CAT"
    cp "$f" ~/Desktop
done 

结果是

Path: /Users/ajharn/Desktop/D53_C71J_C
f: D53_C71J_C1.psd
CAT: /Users/ajharn/Desktop/D53_C71J_C/D53_C71J_C1.psd
f: D53_C71J_C1_MERGE.psd
CAT: /Users/ajharn/Desktop/D53_C71J_C/D53_C71J_C1_MERGE.psd
f: D53_C71J_C2.psd

等等。在到达cp之前,一切都正常。我用回声和诸如此类的东西进行了测试。令人困惑的是cp D53_C71J_C2.psd ~/Desktop在终端中运行良好。

您非常不明智地选择了变量名:外壳使用PATH来存储可执行文件所在目录的路径(请参阅BashGuide和bash手册页中关于特殊外壳参数的部分)。由于cp是一个外部程序,而不是shell命令(它位于/bin/cp),因此当您用当前工作路径覆盖PATH时,shell不会找到它,因此永远不会运行。

按照的思路做更多的事情

[[ -d "$@" ]] && cd "$@"                # cd into folder if is one
for f in ./*; do                        # always prefix relative globs
    [[ -f "$f" ]] && cp "$f" ~/Desktop  # only copy files
done

一切都会好起来的。当然,添加"获取文件夹内容"操作和"移动查找器对象"操作也可以,无需任何shell干预。

最新更新