1

sed プログラムを使用して、bash 変数を使用して構成ファイル内の 2 行のテキストを置き換えようとしています。行の置き換えは機能しますが、行の先頭に余分なスペースがあります。

私のコマンドは次のとおりです。

replacement="computer_id = $server_ref"

(ここで、$server_ref はユーザーが入力した変数です)

その後:

sed "/computer_id/c \ ${replacement}" -i slapos.cfg

置き換えられる他の行は、構成ファイル内の別の変数を変更するだけで、同じコマンドを使用します。

この変更の出力は次のようになります

 computer_id = something

いつあるべきか

computer_id = something

そのスペースを除いていないため、構成を使用してプログラムをクラッシュさせます。

4

1 に答える 1

4

次のようにすると良いかもしれません。

sed -i "s/^\\(computer_id = \\).*/\\1${server_ref}/" slapos.cfg

構成ファイルを読み取るプログラムは、余分な空白が原因でクラッシュした場合、あまり堅牢ではありません。

于 2012-08-07T13:07:41.650 に答える