如何防止回音文本中的替换

时间:2015-03-04 08:27:54

标签: bash scripting

我写了一个包含

的bash脚本
IP=`/sbin/ifconfig eth0 | awk '/inet addr/{print substr($2,6)}'`

我还为它写了一个安装程序:

echo "
echo "this is my script"
IP=`/sbin/ifconfig eth0 | awk '/inet addr/{print substr($2,6)}'`
fi" > /tmp/myscript

但是当我运行它并检查myscript文件时,它会显示IP=xxx.xxx.xxx.xxx而不是变量。所以我假设我错过了某个地方的勾号或引用?

1 个答案:

答案 0 :(得分:2)

您需要在双引号内转义双引号和替换字符($`)或使用here document(推荐):

cat >/tmp/myscript <<"END"
echo "this is my script"
IP=$( /sbin/ifconfig eth0 | awk '/inet addr/{print substr($2,6)}' )
END

请注意,引用单词END会禁用此文档中的命令和参数扩展。在此示例中,我使用了推荐的$( ... )语法进行命令扩展,而不是使用反引号(`...`)。