在启动时将文件系统类型读取到 BASH 变量中

在启动时将文件系统类型读取到 BASH 变量中

我有一个指向 /etc/init.d 文件的 /etc/rc.d/S11 链接,该文件试图设置给定 blkid 条目的文件系统类型的 bash 变量。

root@OpenWrt:/# blkid /dev/mmcblk1p3
/dev/mmcblk1p3: UUID="77111d8a-feb7-470c-a489-ffa0e5415c4c" TYPE="f2fs"
root@OpenWrt:/#

我试图awk在命令上添加 a

root@OpenWrt:/# blkid /dev/mmcblk1p3 | awk '{print $3}'
TYPE="f2fs"
root@OpenWrt:/#

理想情况下,我只需要这个f2fs而不需要其他。使用awk -F = '{print $3}'退货

root@OpenWrt:/# blkid /dev/mmcblk1p3 | awk -F = '{print $3}' 
"f2fs"
root@OpenWrt:/# 

在脚本中,我尝试将其设置为 bash 变量,以便稍后在脚本中使用它。

CUR_FS=$(blkid /dev/mmcblk1p3 | awk '{print $3}');

但是,在我发送到内核日志的调试消息中,它是空白的。

echo "[DEBUG] Shield is in ${SHIELD_MODE} Mode - Using /dev/${MNT_POINT} as ${CUR_FS}" > /dev/kmsg

退货

[   34.836024] [DEBUG] Shield is in Gateway Mode - Using /dev/mmcblk1p3 as 

它是空白的。

在有人指出 OpenWrt 没有bash(默认使用 ash)之前,我正在进行自定义构建并进行烘焙bash

f2fs有人可以指出我在没有双引号的情况下获得最终结果的方向吗?

将输出写入blkid文件会给出空文件。

blkid /dev/mmcblk1p3 2>&1 > /tmp/output
lsblk --noheadings -o FSTYPE /dev/mmcblk1p3 2>&1 > /tmp/output2

编辑注意: lsblk 和 blkid 在我的系统上是分开的,所以我尝试了两种方法。仍然显示空白。难道是我喊得太早了?我还尝试将完整的硬路径放入命令,以防万一$PATH尚未设置 - 仍然空白。

修改 2:有人建议初始化脚本调用得太早。我将脚本设置为S99进行测试,以便它几乎最后被调用,而文件系统调用仍然是空白的。

S99extroot 是有问题的脚本。最初,我在S11

K10gpio_switch   K99umount        S19dropbear      S94gpio_switch                                                          
K10snort         S00sysfixtime    S19firewall      S95done                                                                 
K50dropbear      S10boot          S20network       S96led                                                                  
K85odhcpd        S10system        S35odhcpd        S98sysntpd                                                              
K89log           S11sysctl        S50cron          S99extroot                                                              
K90network       S12log           S50uhttpd        S99urandom_seed                                                         
K90sysfixtime    S12rpcd          S80ucitrack                                                                              
K98boot          S19dnsmasq       S90snort                                                                                 
root@OpenWrt:/# 

答案1

我不得不拖延,init直到 blk 设备可用。放入一个while true循环以继续检查它,这样我就可以做到mknod

相关内容