이 스크립트가 있습니다.
#!/bin/sh -x
/bin/echo "Drag folder into Terminal and hit return ->"
/usr/bin/read folderLocation
/bin/cp -R "$folderLocation" /Users/my/Desktop/
그리고 그것은 다음을 반환합니다:
+ /bin/cp -R '' /Users/my/Desktop/
cp: fts_open: No such file or directory
왜 그런지 아시나요?
통찰력을 가져 주셔서 감사합니다!
답변1
Debian Gnu/Linux에서 이 작업을 수행했습니다.
#!/bin/sh -x
/bin/echo "Drag folder into Terminal and hit return ->"
read folderLocation
eval "cp -R -t '/home/my/Desktop' $folderLocation"
읽을 경로를 삭제했습니다(읽을 필요는 없을 수도 있습니다(read는 bash에 내장되어 있으며 /usr/bin
또는 에서 찾을 수 없음 /bin
).
중요한 변경 사항은 마지막 줄에 있습니다:
- -t 옵션 뒤에 대상 디렉토리가 오면 cp가 더욱 강력해집니다.
- 읽기에 의한 반환 값 주위에 따옴표가 있기 때문에 eval이 필요합니다.
왜 ''(읽기에서 빈 문자열)을 얻습니까? 드래그 앤 드롭이 작동하지 않기 때문인 것 같습니다. 이는 셸의 기능이 아니라 터미널 및 파일 관리자의 기능입니다. 어떤 터미널 프로그램을 사용하고 있습니까?