尝试在 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 命令通过 shell 可以正常工作。
答案1
变量不适合存储命令。为此使用函数(必要时)。以下是如何更地道地编写您的脚本
#!/bin/bash
fixSshd() {
sudo sed -i 's/^PermitRootLogin.*/PermitRootLogin yes/g' /etc/ssh/sshd_config
}
fixSshd
如果您的脚本将由 root 用户运行,则删除sudo
.
如果您想捕获命令的错误输出,请将上次替换为此
response=$(fixSshd 2>&1)
echo "Response is: $response"