【发布时间】:2021-07-04 19:03:54
【问题描述】:
我正在尝试使用 sed 插入存储在变量中的字符串,如下所示:
sed -i "s/^GRUB_CMDLINE_LINUX_DEFAULT.*/$kernel_options/g" /etc/default/grub
我要替换的行是:
GRUB_CMDLINE_LINUX_DEFAULT=""
变量是:
kernel_options="GRUB_CMDLINE_LINUX_DEFAULT=\"cryptdevice=${target_disk}${disk_append}2:luks:allow-discards resume=\/dev\/lvm\/swap mem_sleep_default=deep i915.enable_psr=0 i915.enable_fbc=1 i915.enable_guc=2\""
${target_disk} 和 ${disk_append} 是在前面确定的:
target_disk=$(dialog --clear --title "Harddisk" --radiolist "Please select the target device" 0 0 0 \
$(ls /dev/sd? /dev/vd? /dev/mmcblk? /dev/nvme?n? -1 2> /dev/null | while read line; do
echo "$line" "$line" on; done) 3>&1 1>&2 2>&3)
if test $? -eq 1; then exit 1; fi
if grep -q "mmcblk" <<< $target_disk || grep -q "nvme" <<< $target_disk; then
disk_append=p
fi
我似乎无法让 sed 部分正常工作,感谢任何关于如何改进它的建议。
提前谢谢你。
【问题讨论】:
-
sed 部分在我看来不错....echo $kernel_options 的输出是什么,您如何设置 kernel_options?你要出口吗?