2012-07-20 72 views
0

所以下面的問題似乎內的Automator引起的,但我不能肯定(我會張貼圖片,但我沒有足夠的積分):通過Automator的終端複製文件

我有一個Automator的服務,它的第一個操作是「Get Specified Finder Items」工具,轉到~/Desktop/D53_C71J_C。下一個動作是「運行Shell腳本」包含

PATH="[email protected]" 
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在終端工作正常。

回答

0

您已經非常不明智地選擇了您的變量名稱:shell使用PATH來存儲可執行文件所在目錄的路徑(請參見the section on special shell parameters in the BashGuidebash man page)。由於cp是一個外部程序,而不是shell命令(它位於/bin/cp),因此當您用當前工作路徑覆蓋PATH時,shell不會找到它,因此永遠不會運行。

做點什麼沿

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

,所有的線條更將是很好。當然,添加一個「獲取文件夾內容」操作和一個「移動查找器對象」也可以工作,沒有任何外殼介入。

+0

啊,我應該注意到這樣一個基本單詞可能是一個關鍵字。也感謝您的鏈接。由於我對shell腳本還很陌生,因此我很欣賞爲什麼它也是錯誤的解釋。非常感謝您的幫助! – Sleepykrooks 2012-07-23 19:35:40