我有一个指向 /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
。