eval 문과 함께 sed를 사용해 보시겠습니까?
#!/bin/bash
declare COMMAND="sudo sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/g' /etc/ssh/sshd_config"
theResponse=$(${COMMAND} 2>&1)
echo "${theResponse}"
위 스크립트에서 다음 오류가 발생하는 이유를 알 수 없는 것 같습니다.
sed: -e 표현식 #1, 문자 1: 알 수 없는 명령: ""
sed 명령은 셸을 통해 제대로 작동합니다.
답변1
변수는 명령을 저장하는 데 적합하지 않습니다. 이를 위해 기능을 사용하십시오(필요한 경우). 스크립트를 좀 더 관용적으로 작성하는 방법은 다음과 같습니다.
#!/bin/bash
fixSshd() {
sudo sed -i 's/^PermitRootLogin.*/PermitRootLogin yes/g' /etc/ssh/sshd_config
}
fixSshd
루트 사용자가 스크립트를 실행하는 경우 제거하십시오 sudo
.
명령의 오류 출력을 캡처하려면 마지막을 다음으로 바꾸십시오.
response=$(fixSshd 2>&1)
echo "Response is: $response"