나는 bash 스크립트를 사용하여 파일 이름을 사용하여/tmp /에 새 폴더를 만든 다음 그 폴더 안에 파일을 복사합니다.bash 스크립트에 기본 이름이 공백이 있습니까?
#!/bin/bash
MYBASENAME="`basename $1`"
mkdir "/tmp/$MYBASENAME"
for ARG in "[email protected]"
do
mv "$ARG" "/tmp/$MYBASENAME"
done
행동 : 나는 mymove "/home/me/downloads/my new file.zip"
입력하면
는이 보여줍니다
mkdir /tmp/my
new
file.zip
mv: rename /home/me/downloads/my new file.zip to /tmp/my\nnew\nfile.zip:
내가 다 따옴표를 많이, 그래서이 예상대로 작동하지 않는 이유를 이해하지 않습니다 .
또한 여러 파일이있는 경우 양식 루프가 있습니다. 첫 번째 인수의 기본 이름을 기반으로 모두 동일한 폴더에 복사하려고합니다.
많은 기본 쉘 스크립트가 bash 대신 sh를 사용합니다.새로운 줄을 보이지 않게하기 위해서'echo \ c' 같은 것을 제외하고는 여전히 차이점을 너무 많이 말할 수 없습니다. 도움말과 도움이되는 답변에 감사드립니다. – cwd
echo \ c를 사용하는 이식성있는 방법은 형식 문자열에서'\ n'을 생략 할 경우'printf'를 사용하는 것입니다. 가장 자주 사용되는 bashism은 배열 변수, 테스트 용으로'[[...]]'와 같은 비 POSIX 구문, for ((...))가있는 루프,'select' 구조체 . – Jens
내 macosx 사자에 배송 된 bash에서는 작동하지 않습니다 (GNU bash, 버전 3.2.48 (1) -release (x86_64-apple-darwin11)) – rjha94