이 질문을 어디에 물어야 할지, 올바른 용어로 어떻게 질문해야 할지 잘 모르겠습니다.
여기에 사용자(bukkit)를 위한 게임(minecraft) 서버를 관리하기 위한 스크립트가 있습니다. 일부 변수를 제거하고이것이 작동하지 않는 이유와 가능한 해결 방법을 알고 싶습니다..
#!/bin/bash
# /etc/init.d/bukkit
USERNAME='bukkit'
MCROOT='/home/$USERNAME'
MCPATH='/home/$USERNAME/Server'
BACKUPPATH='/home/$USERNAME/backups'
SCRIPTLOG='/home/$USERNAME/script.log'
LOGPATH='/home/$USERNAME/Server/logs'
(line 50) cd $MCPATH
(또한 그 뒤의 경로에 $MCROOT를 포함시키는 것을 좋아합니다.)
스크립트를 실행하면 다음이 제공됩니다.
/bin/bukkit: line 50: cd: /home/$USERNAME/Server: No such file or directory
-su: line 0: cd: /home//Server: No such file or directory
요점은 다른 파일에 다른 사용자 이름을 갖는 것입니다. 모든 경로를 편집하는 시간을 절약하고 일반적으로 나머지 코드의 모든 것을 변수로 바꿀 수 있다고 생각했습니다. 그래서 "ftb"라는 이름의 다른 파일은USERNAME='ftb'
"/bin/bukkit" is a symbolic link to "/etc/init.d/bukkit"
좋은 하루 보내세요!
답변1
/home/$USERNAME/Server
변수는 작은따옴표 내에서 확장되지 않으므로 시스템은 대신 리터럴을 찾습니다 /home/bukkit/Server
.
큰따옴표를 사용하면 코드가 작동합니다.
MCPATH="/home/$USERNAME/Server"
더 자세히 논의됨환경 변수에서 작은따옴표와 큰따옴표의 의미는 무엇입니까?