一部のアプリケーションの設定ファイルを自動的に構成するbashスクリプトを作成しました。
アプリケーションは file と同様の構文を使用し/etc/sysconfig/network
ますが、唯一の例外は、値を二重引用符で囲む必要があることです" "
。
したがって、スクリプトの行は次のようになりますが、 内の IP アドレスの二重引用符を許可する方法がわかりませんecho
。
echo " ipaddr="1.1.1.1" " > file
どうすればそれができますか?
一部のアプリケーションの設定ファイルを自動的に構成するbashスクリプトを作成しました。
アプリケーションは file と同様の構文を使用し/etc/sysconfig/network
ますが、唯一の例外は、値を二重引用符で囲む必要があることです" "
。
したがって、スクリプトの行は次のようになりますが、 内の IP アドレスの二重引用符を許可する方法がわかりませんecho
。
echo " ipaddr="1.1.1.1" " > file
どうすればそれができますか?
バックスラッシュ文字で引用符をエスケープするか、単一引用符を使用します。
echo "ipaddr=\"1.1.1.1\""
echo 'ipaddr="1.1.1.1"'
他の回答はすべて、問題を解決する優れた方法を提供します。を使用して追加したいだけprintf
です。たとえば、IPアドレスが変数に格納されている場合に快適になります。
ip=1.1.1.1
printf 'ipaddr="%s"\n' "$ip" > file
ただし、ここでも、他の回答と同様に、一重引用符と二重引用符の両方を使用する必要があります。
の代わりにを使用すると、次のいずれかを使用する必要があるため、この場合は快適です (ip が変数にあると仮定しますip
) 。echo
printf
echo "ipaddr=\"$ip\"" > file
# or
echo 'ip addr="'"$ip"'"' > file
(わかりました、大したことではありませんが、通常はbashprintf
よりも好きです)。echo
少なくとも 2 つのオプションがあります。
二重引用符を一重引用符でエスケープします。
echo ' ipaddr="1.1.1.1" ' > file
バックスラッシュで二重引用符をエスケープします。
echo "ipaddr=\"1.1.1.1\"" > file
一般に、バックスラッシュを使用して任意の 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