簡體   English   中英

通過Automator中的終端復制文件

[英]Copy files through terminal in Automator

因此,以下問題似乎是由Automator引起的,但我不確定(我會發布圖像,但積分不足):

我有一個Automator服務,其第一個操作是轉到~/Desktop/D53_C71J_C “獲取指定的查找器項目”工具。 下一個動作是“ Run Shell Script”,其中包含

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在Terminal中可以正常工作。

您非常不明智地選擇了變量名:shell使用PATH將路徑存儲到可執行文件所在的目錄(請參閱BashGuidebash手冊頁中 有關特殊shell參數的部分 )。 由於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干預。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM