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
rootユーザーがスクリプトを実行している場合は削除しますsudo
。
コマンドのエラー出力をキャプチャするには、最後を次に置き換えます。
response=$(fixSshd 2>&1)
echo "Response is: $response"