아, 몇 페이지와 질문을 읽었지만 이해할 수 없거나 완전히 이해할 수 없습니다...
jdir0="$@" # /home/tor/subbackup/teest2/jjj
mv "$jdir0/subs/*.srt" /home/tor/subbackup/
mv: '/home/tor/subbackup/teest2/jjj/*.srt'를 계산할 수 없습니다. 해당 파일이나 디렉터리가 없습니다.
음, 어, 예, 거기에 test2.srt가 있습니다..
저는 수많은 다양한 솔루션이 포함된 여러 페이지를 보았고 제가 이해한 바에 따르면 이는 다음과 같이 번역되어야 합니다(첫 번째 이동 명령).
mv /home/tor/subbackup/teest2/jjj/subs/test2.srt /home/tor/subbackup/
이것은 터미널에서 잘 작동합니다 ..
(첫 번째 이동 명령) 하지만 스크립트에서 작동하도록 할 수 없습니다. 내가 뭘 잘못하고 있는 걸까요?
답변1
jdir0="$@"
"$@"
다음으로 확장모두스크립트에 대한 위치 인수/인수입니다. 단일 변수에 할당하면 Bash는 변수를 공백으로 연결합니다. 당신은 단지 $1
여기에 있고 싶을 수도 있습니다.
mv "$jdir0/subs/*.srt"
변수 확장은 토큰화를 방지하고 변수에 glob처럼 보이는 항목이 포함된 경우 와일드카드를 방지하므로 실제로 인용해야 합니다. 하지만 여기서는 아마도 하드코딩된 glob이 작동하기를 원할 것입니다.아니요인용하십시오.
따라서 따옴표 바깥에 별표를 남겨두십시오.
mv "$jdir0"/subs/*.srt
또는 예를 들어
mv "$jdir0/subs/"*.srt
둘 다 동일하게 작동하므로 더 좋다고 생각하는 변형을 사용하십시오.