다음 형식으로 폴더 목록에 액세스할 수 있습니다.
lastname, firstname(id)
터미널에서 폴더를 입력하려고 하면
cd test/lastname,\ firstname\(id\)
공백이 없는 데 백슬래시가 있는 이유를 알 수 없는 것 같습니다. 내 스크립트는 자격 증명에 액세스할 수 있으며 백슬래시를 사용하여 정확한 형식이 생성되지만 여전히 bash 스크립트에서 폴더에 들어갈 수 없습니다. 제가 사용하는 변수는 다음과 같습니다.
folder="lastname,\ firstname\(id\)"
이렇게 하면 cd $HOME/test/$folder/
해당 폴더가 없다고 나옵니다. 다양한 문제에 대해 제안된 여러 가지 솔루션을 시도했지만 작동하지 않았습니다. 폴더 변수의 큰따옴표 안에 넣으면 전체 표현식이 작동하지 않습니다. 나는 무엇이 잘못되었는지 모르기 때문에 제대로 작동하지 못하는 것 같아요. 누군가가 여기서 나를 도울 수 있다면 좋을 것입니다!
답변1
이것:
제가 사용하는 변수는 다음과 같습니다.
folder="lastname,\ firstname\(id\)"
~ 할 것이다아니요일하다. 왜냐면 변수는유지하다백슬래시:
[maulinglawns@ArchLinux ~]$ folder="lastname,\ firstname\(id\)"
[maulinglawns@ArchLinux ~]$ echo "$folder"
lastname,\ firstname\(id\)
따라서 다음과 같은 메시지가 나타납니다.
cd "slask/$folder"
bash: cd: slask/lastname,\ firstname\(id\): No such file or directory
이 문제를 해결하는 가장 쉬운 방법은 ""
다음과 같이 변수를 에 넣는 것입니다.
[maulinglawns@ArchLinux slask]$ mkdir lastname,\ firstname\(id\)
[maulinglawns@ArchLinux slask]$ folder="lastname, firstname(id)"
[maulinglawns@ArchLinux slask]$ cd "$folder"
[maulinglawns@ArchLinux lastname, firstname(id)]$
이렇게 하면 쉘이 변수의 공백으로 분할되지 않습니다. 변수 및 참조에 대해 자세히 알아보세요.여기.
답변2
확장명 인용( $folder
예 확장자, "매개변수 확장자"):
$ cd "$HOME/test/$folder/"
값을 작은따옴표로 묶은 경우:
$ folder='lastname, firstname(id)'
위의 코드는 백틱 없이도 cd
잘 작동합니다 .