Regex 使用sed在txt文件的第1行插入一个变量
我有以下几点建议:Regex 使用sed在txt文件的第1行插入一个变量,regex,bash,sed,Regex,Bash,Sed,我有以下几点建议: #!/bin/bash if ["$#" -ne "1"]; then echo "Usage: `basename $0` <HOSTNAME>" exit 1 fi IPADDR=`ifconfig | head -2 | tail -1 | cut -d: -f2 | rev | cut -c8-23 | rev` sed -i -e '1i$IPADDR $1\' /etc/hosts 我如何处理这些问题 您的问题是单引号“中的变量不会
#!/bin/bash
if ["$#" -ne "1"]; then
echo "Usage: `basename $0` <HOSTNAME>"
exit 1
fi
IPADDR=`ifconfig | head -2 | tail -1 | cut -d: -f2 | rev | cut -c8-23 | rev`
sed -i -e '1i$IPADDR $1\' /etc/hosts
我如何处理这些问题 您的问题是单引号
“
中的变量不会被shell展开,而是保持不变。要引用您想要扩展的变量,请使用双引号“
,或者如果不需要引号,请省略引号,例如:
sed -i -e '1i'$IPADDR' '$1'\' /etc/hosts
在上面的一行中,
$IPADDR
和$1
在引号之外,并且在参数被馈送到sed
之前,将由shell展开。您的问题是单引号中的变量不会被shell展开,而是保持不变。要引用要展开的变量,请使用双引号“
或者,如果不需要引号,就不要使用引号,例如:
sed -i -e '1i'$IPADDR' '$1'\' /etc/hosts
在上面的第行中,$IPADDR
和$1
不在引号内,将在参数馈送到sed
之前由shell展开。单引号表示字符串没有作为变量插入
#!/bin/bash
IPADDR=$(/sbin/ifconfig | head -2 | tail -1 | cut -d: -f2 | rev | cut -c8-23 | rev)
sed -i -e "1i${IPADDR} ${1}" /etc/hosts
出于习惯,我还在$(…)
中执行了该命令 单引号表示字符串不是作为变量插值的
#!/bin/bash
IPADDR=$(/sbin/ifconfig | head -2 | tail -1 | cut -d: -f2 | rev | cut -c8-23 | rev)
sed -i -e "1i${IPADDR} ${1}" /etc/hosts
出于习惯,我还在$(…)
中执行了该命令 你知道我还有$1
作为参数。。。怎么样?@MortezaLSC:相同的模式,保留在单引号之外,请参见我的编辑。谢谢……我会检查的。你知道我还有$1
作为参数。。。怎么样?@MortezaLSC:相同的模式,将它们保留在单引号之外,请参阅我的编辑。谢谢……我会检查它。有更可靠的方法提取ip地址,例如,请参阅。有更可靠的方法提取ip地址,例如,请参阅。