脚本中的变量和引号问题(包括 sed 命令)

脚本中的变量和引号问题(包括 sed 命令)

我正在尝试让这个脚本工作:

#!/bin/bash
win_location=$(cat /boot/grub/grub.cfg | grep 'class windows' | cut -d "'" -f2)
sudo sed -i 's/^'GRUB_DEFAULT='.*$/GRUB_DEFAULT="$win_location"/' /etc/default/grub
sudo update-grub2

但问题是它无法识别该变量,该变量应该在文件的引号之间打印,因为它的值包含空格。

任何想法?

先感谢您

答案1

如果你想在 sed 中使用变量,请使用双引号而不是单引号

根据您的示例,您在 sed 中有变量

sudo sed -i "s|^GRUB_DEFAULT=.*$|GRUB_DEFAULT=\"$win_location\"|g" /etc/default/grub

相关内容