awk和bash脚本? [重复]


青年@
2025-03-27 03:18:50 (12天前)


我想知道为什么它不起作用。
请建议我。

工作

$ nu =awk’/ ^ Mem / {printf($ 2 0.7);}’<(free -m)
$ echo $ nu
1291.5
2.不工作

$ cat test.sh
#!/斌/庆典
nu =`awk’/ ^ Mem / {printf($ 2


4 条回复
  1. 0# 布偶的表弟派大星丶 | 2019-08-31 10-32





    <( )

    construct(“process substitution”)仅在bash中可用。它在其他shell中不可用,甚至在使用名称“sh”调用时在bash中也不可用。使用时运行脚本

    sh test.sh

    ,它会覆盖shebang(指定bash),因此该功能不可用。您需要使用显式运行脚本

    bash

    ,或(更好)只是运行它

    ./test.sh

    让shebang线做好自己的工作。


  2. 1# 甲基蓝 | 2019-08-31 10-32



    你可以尝试一下吗?




    1. nu=$(free -m | awk ‘/^Mem/ {print $2*0.7}’)
      echo $nu

    2. </code>


    注意事项是:




    • 使用反引号是折旧使用

      $

      存储变量的值。


    • 也是先跑

      free

      命令将其标准输出作为标准输入传递给

      awk

      使用命令

      |

      (这应该是发送命令输出的理想方式

      awk

      在这种情况下特别)并将其输出保存到名为的变量

      nu




    • 现在终于打印变量

      nu

      通过

      echo




    • 以来

      <(…)

      bash不支持sh支持进程替换所以我试图给出一个可以支持而无需进程替换的解决方案(我之前也提到过)。


  3. 2# 早岁那知世事艰 | 2019-08-31 10-32



    添加原因的原因

    家当

    在脚本中,如果文件具有执行权限,则定义解释器指令。



    然后,您应该通过例如调用它




    1. $ ./test.sh

    2. </code>


    一旦你设置了权限




    1. $ chmod +x test.sh

    2. </code>

登录 后才能参与评论