1

一部のアプリケーションの設定ファイルを自動的に構成するbash

アプリケーションは file と同様の構文を使用し/etc/sysconfig/networkますが、唯一の例外は、値を二重引用符で囲む必要があることです" "

したがって、スクリプトの行は次のようになりますが、 内の IP アドレスの二重引用符を許可する方法がわかりませんecho

echo " ipaddr="1.1.1.1" " > file

どうすればそれができますか?

4

4 に答える 4

4

バックスラッシュ文字で引用符をエスケープするか、単一引用符を使用します。

echo "ipaddr=\"1.1.1.1\""
echo 'ipaddr="1.1.1.1"'
于 2013-06-23T17:33:28.927 に答える
2

他の回答はすべて、問題を解決する優れた方法を提供します。を使用して追加したいだけprintfです。たとえば、IPアドレスが変数に格納されている場合に快適になります。

ip=1.1.1.1

printf 'ipaddr="%s"\n' "$ip" > file

ただし、ここでも、他の回答と同様に、一重引用符と二重引用符の両方を使用する必要があります。

の代わりにを使用すると、次のいずれかを使用する必要があるため、この場合は快適です (ip が変数にあると仮定しますip) 。echoprintf

echo "ipaddr=\"$ip\"" > file
# or
echo 'ip addr="'"$ip"'"' > file

(わかりました、大したことではありませんが、通常はprintfよりも好きです)。echo

于 2013-06-23T17:42:40.580 に答える
2

少なくとも 2 つのオプションがあります。

  1. 二重引用符を一重引用符でエスケープします。

    echo ' ipaddr="1.1.1.1" ' > file
    
  2. バックスラッシュで二重引用符をエスケープします。

    echo "ipaddr=\"1.1.1.1\"" > file
    

一般に、バックスラッシュを使用して任意の 1 文字をエスケープできます。また、一方のタイプの引用を使用して他方をエスケープできます。

于 2013-06-23T17:34:03.897 に答える
1

あなたは選択肢を得ました:

エコーの内側と外側で異なる引用符を使用できます

echo "ipaddr='1.1.1.1'" > file
echo 'ipaddr="1.1.1.1"' > file

引用符をエスケープできます:

echo "ipaddr=\"1.1.1.1\"" > file

または、もっと簡単にすることもできます (ただし、引用符にエスケープを使用します)。

echo ipaddr=\"1.1.1.1\" > file
于 2013-06-23T17:33:52.940 に答える