使用sed编辑文件的bash脚本不会持续重启

时间:2019-12-08 06:38:03

标签: bash sed raspberry-pi

我编写了一个脚本,用于将boot目录从microSD卡迁移到USB驱动器。这是用于树莓派4项目的。作为该脚本的一部分,将更新两个文件以删除microSD引用并使用USB拇指驱动器的UUID引用。该脚本以sudo的身份运行。用于更新/boot/cmdline.txt/etc/fstab文件的脚本如下:

#!/bin/bash

fCMDLINE=/boot/cmdline.txt
fFSTAB=/etc/fstab

cat $fCMDLINE
sed -i -r -e 's/PARTUUID=([a-z]\S*)/PARTUUID='"$vPARTUUID"'/g' $fCMDLINE
cat $fCMDLINE

cat $fFSTAB
sed -i -r -e 's/PARTUUID=([a-z]\S*)/\/dev\/disk\/by-uuid\/'"$vUUID"'/g' $fFSTAB
cat $fFSTAB

运行整个脚本后,前置和后置文件如下:

CMDLINE FILE

#ORIGINAL
console=serial0,115200 console=tty1 root=PARTUUID=d9b3f436-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles

#UPDATED
console=serial0,115200 console=tty1 root=PARTUUID=0b1e4c33-0a73-4c26-aad2-03c1b5fd9266 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles

FSTAB FILE

#ORIGINAL
proc            /proc           proc    defaults          0       0
PARTUUID=d9b3f436-01  /boot           vfat    defaults          0       2
PARTUUID=d9b3f436-02  /               ext4    defaults,noatime  0       1
# a swapfile is not a swap partition, no line here
#   use  dphys-swapfile swap[on|off]  for that

#UPDATED
proc            /proc           proc    defaults          0       0
/dev/disk/by-uuid/5bee13fa-5c62-45b0-91ed-12c544d4b528  /boot           vfat    defaults          0       2
/dev/disk/by-uuid/5bee13fa-5c62-45b0-91ed-12c544d4b528  /               ext4    defaults,noatime  0       1
# a swapfile is not a swap partition, no line here
#   use  dphys-swapfile swap[on|off]  for that

两个文件的输出均正确,并且sed命令似乎已在替换UUID时按预期执行。但是,当我重新启动树莓派时,原始fstab文件会保留下来,并且不会更新。这仅在重启后发生。在此之前,文件是正确的,并且一切都按预期装入。

#After Reboot

pi@raspberrypi:~ $ sudo cat /etc/fstab
proc            /proc           proc    defaults          0       0
PARTUUID=d9b3f436-01  /boot           vfat    defaults          0       2
PARTUUID=d9b3f436-02  /               ext4    defaults,noatime  0       1
# a swapfile is not a swap partition, no line here
#   use  dphys-swapfile swap[on|off]  for that

没关系,但这是两个具有权限的文件。

/boot/
-rwxr-xr-x 1 root root      191 Dec  8 01:01 cmdline.txt

/etc/
-rw-r--r--  1 root root     314 Sep 26 01:31 fstab

预期的行为将是fstab文件保持重新引导的方式与cmdline.txt文件持久保持的方式相同。显然有些东西我只是想念。有什么想法吗?

更新...

我以前没有注意到,但是上面的两个文件没有相同的日期--9/26文件是Buster(9/26)图像中的原始文件,并且没有更新。重新启动之前,文件为:

-rw-r--r--  1 root root     382 Dec  8 18:16 fstab

莫名其妙-我觉得这是硬件问题或更深层的操作系统错误。

0 个答案:

没有答案