我有这段代码:
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函数时,我看不到变量
我该如何解决这个问题?
答案 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,首先关闭现有命令(关闭单引号),然后用双引号括起变量(以满足空间),最后再次重新打开命令。