我写了一个包含
的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
而不是变量。所以我假设我错过了某个地方的勾号或引用?
答案 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
会禁用此文档中的命令和参数扩展。在此示例中,我使用了推荐的$( ... )
语法进行命令扩展,而不是使用反引号(`...`
)。