警告

警告

每次系统启动时我都应该检查文件“/etc/fstab”:

# UNCONFIGURED FSTAB FOR BASE SYSTEM
#/dev/disk/by-partlabel/userdata    /userdata    ext4    defaults    0    2
#/dev/disk/by-partlabel/oem         /oem         ext4    defaults    0    2

如果这些行:

  • /dev/disk/by-partlabel/userdata
  • /dev/disk/by-partlabel/oem

以“#”(注释)开头,删除注释并重新启动系统

我做了一个简单的批处理,从第 2 行开始删除每行的“#”:

#!/bin/bash
# Check if the WiFi driver will be loaded
echo -e "\n\r##############################"
echo -e "#  Start reading /etc/fstab  #"
echo -e "##############################\n\r"

cat /etc/fstab

# Backup the original file
cp /etc/fstab /etc/fstab.bak

# Remove '#' starting from the second line
sed -i '2,3s/#//' $fstabConfigPath

由于将来文件 /etc/fstab 可能包含其他行,因此我想改进脚本以仅删除指定行的“#”。

谢谢你的帮助,费德里科

答案1

sed您应该要求仅对与模式匹配的行进行操作,而不是指向编号的行。您可以通过以下方法来做到这一点:

sed -ri.bak '/^#[/]dev[/]disk[/]by-partlabel[/](userdata|oem)( |\t)/ s/^#//' /etc/fstab

无需复制该文件,您可以sed -i通过为其指定您想要的扩展名来为您创建该文件。

在重新启动之前检查文件是否确实被修改。

diff -q /etc/fstab /etc/fstab.bak || reboot

警告

自动编辑/etc/fstab和重新启动似乎有点冒险——如果出现问题,您可能会发现系统无法启动。

相关内容