awk help>将输出发送到命令

时间:2015-09-27 03:54:41

标签: openwrt

我绝不是程序员。我会把它放在那里。但是,我试图编写一个在抓取uuid数据后写入fstab条目的脚本。这是在我的路由器上的OpenWRT环境中。我的目标:

  1. 使用awk抓取uuid信息,例如:
  2. blkid / dev / sdb2 | awk -F' UUID =" |"' ' {print $ 2}'

    1. 将完整的uuid输出发送到此命令的末尾:
    2. uci set fstab。@ mount [-1] .uuid =

      1. 使用正确的uuid执行该命令。
      2. 此命令将uuid写入fstab中的正确位置。如何在bash脚本中完成?

        谢谢,

        KG

3 个答案:

答案 0 :(得分:0)

您可以从awk(使用system(...))或shell中(使用uci set fstab.@mount[-1].uuid=$(blkid ...))执行命令。

答案 1 :(得分:0)

我不能用uci命令测试它,但我相信这应该做你需要的。

bblkid /dev/sda1 | uci set fstab.@mount[-1].uuid=$( awk -F'UUID="|"' '{print $2}' )

编辑:这可能会更好。

uci set fstab.@mount[-1].uuid=$( bblkid /dev/sda1 | awk -F'UUID="|"' '{print $2}' )

编辑2:稍微短一些,但应该得到相同的结果。承诺这是最后一个

uci set fstab.@mount[-1].uuid=$( bblkid /dev/sda1 | tr -d UUID=\" )

答案 2 :(得分:0)

上述选项并不是很正常。

如果我在fstab中有这个怎么办?

选项uuid' hotdog'

我想替换“#34; hotdog"使用此命令的uuid输出:

在我的路由器上输出如下:

root@OpenWrt:/etc/config# blkid /dev/sdb2 | awk -F'UUID="|"' '{print $2}'

8618b8fe-93a9-488c-a901-0df30898c82e

root @ OpenWrt:/ etc / config#block info | grep sdb2 / dev / sdb2:UUID =" 8618b8fe-93a9-488c-a901-0df30898c82e" NAME =" EXT_JOURNAL" VERSION =" 1.0" TYPE =" EXT4"

我想用随机uuid替换单词hotdog,并保留分号。请记住,每次格式化该分区时,uuid都会更改。