Sed附加文件可能使用$?

时间:2018-01-04 09:57:58

标签: bash sed

我有这段代码:

sed -i -e '$a\
persist.sys.timezone=Europe/Rome \
ro.miui.region=IT \
ro.miui.cust_variant=it \
ro.product.locale.language=it \
ro.product.locale.region=IT \
ro.product.mod_device=$DEVICE_NAME_miuita_global \
ro.miui.mcc=9998 \
ro.miui.mnc=9999 \
net.dns2=8.8.4.4' $BUILDPROP'

除了这个字符串

之外他完美地工作
ro.product.mod_device=$DEVICE_NAME_miuita_global

仍然没有变化

通常$ DEVICE_NAME会自动调用设备名称,例如,如果在cancro上工作

ro.product.mod_device=cancro_miuita_global

我想指出在我的代码中bash函数$ DEVICE_NAME是完美的,所以当我使用sed函数时,我看不到变量

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

将$ DEVICE_NAME更改为$ {DEVICE_NAME}。

当变量名后跟空格时(如$ a变量所示),可以省略花括号。

答案 1 :(得分:0)

这可能适合你(GNU sed):

sed -i -e '$a\
persist.sys.timezone=Europe/Rome \
ro.miui.region=IT \
ro.miui.cust_variant=it \
ro.product.locale.language=it \
ro.product.locale.region=IT \
ro.product.mod_device='"$DEVICE_NAME"'_miuita_global \
ro.miui.mcc=9998 \
ro.miui.mnc=9999 \
net.dns2=8.8.4.4' $BUILDPROP

你需要打孔到shell,首先关闭现有命令(关闭单引号),然后用双引号括起变量(以满足空间),最后再次重新打开命令。