![eval 문과 함께 sed를 사용해 보시겠습니까? [복사]](https://linux55.com/image/14894/eval%20%EB%AC%B8%EA%B3%BC%20%ED%95%A8%EA%BB%98%20sed%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%B4%20%EB%B3%B4%EC%8B%9C%EA%B2%A0%EC%8A%B5%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
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"