2012-07-20 3 views
0

그래서 다음 문제는 자동화 내에서 발생하는 것 같지만 나는 (I 이미지를 게시 할 것입니다하지만 난 충분히 포인트가없는) 확신 할 수 없다 :파일 복사는

내가 누구 자동화 서비스를 첫 번째 작업은 ~/Desktop/D53_C71J_C으로가는 "지정된 찾기 항목 가져 오기"도구입니다. 다음 작업은 결과

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 

입니다

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 

를 포함하는 "실행 쉘 스크립트"등등 그것은 모든 작품은 cp에 도달 할 때까지. 나는 에코 (echos)로 테스트했고, 그런 경로가 나열되어 있습니다. 혼란스러운 부분은 터미널에서 cp D53_C71J_C2.psd ~/Desktop이 잘 작동한다는 것입니다.

답변

0

변수 이름을 매우 정확하게 선택했습니다. PATH은 실행 파일이있는 디렉토리의 경로를 쉘이 저장하는 데 사용됩니다 (the section on special shell parameters in the BashGuidebash man page 참조). cp은 쉘 명령이 아닌 외부 프로그램이므로 (/bin/cp에 있음) PATH을 현재 작업 경로로 덮어 쓰면 쉘에서 찾지 못하므로 절대 실행되지 않습니다.

[[ -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

아, 나는 아마 그런 기본 단어가 키워드 였음을 알아 차렸을 것입니다. 그 링크들도 고맙습니다. 필자는 쉘 스크립팅에 아직 익숙하지 않아서 왜 잘못되었는지에 대한 설명을 고맙게 생각합니다. 당신의 도움을 주셔서 대단히 감사합니다! – Sleepykrooks