我编写了一个bash脚本,可以自动为某个应用程序配置设置文件。
该应用程序使用与/etc/sysconfig/network
文件类似的语法,唯一的例外是它要求值为双引号" "
。
因此脚本中的行看起来像这样,但我不知道如何在echo
中允许ip地址的双引号:
echo " ipaddr="1.1.1.1" " > file
怎么做?
答案 0 :(得分:4)
使用反斜杠字符转义引号或使用单引号:
echo "ipaddr=\"1.1.1.1\""
echo 'ipaddr="1.1.1.1"'
答案 1 :(得分:2)
您至少有两个选择:
使用单引号转义双引号:
echo ' ipaddr="1.1.1.1" ' > file
使用反斜杠转义双引号:
echo "ipaddr=\"1.1.1.1\"" > file
通常,您可以使用反斜杠来转义任何单个字符;你可以使用一种报价来逃避另一种报价。
答案 2 :(得分:2)
其他答案都提供了解决问题的绝佳方法。我只想使用printf
添加一个,如果将IP地址存储在变量中,可以使事情变得舒适:
ip=1.1.1.1
printf 'ipaddr="%s"\n' "$ip" > file
但在这里,与其他答案一样,你需要同时使用单引号和双引号。
在这种情况下情况会很舒服(仍然假设ip在变量ip
中),因为使用echo
代替printf
,您必须使用以下任何一种:< / p>
echo "ipaddr=\"$ip\"" > file
# or
echo 'ip addr="'"$ip"'"' > file
(好吧,这不是什么大问题,但我通常比bash中的printf
好echo
。
答案 3 :(得分:1)
你可以在echo
的内部和外部使用不同的引号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