Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
bash脚本读取RSS提要,如果结果大于X,则执行另一个脚本_Bash_If Statement_Awk_While Loop - Fatal编程技术网

bash脚本读取RSS提要,如果结果大于X,则执行另一个脚本

bash脚本读取RSS提要,如果结果大于X,则执行另一个脚本,bash,if-statement,awk,while-loop,Bash,If Statement,Awk,While Loop,我在阅读和If程序时有点搞砸了 我正在尝试为Linux创建一个bash脚本,它从rsstail读取经过处理的干净数值输出,如果数值输出大于5.5,那么它将执行我已有的另一个脚本 我正在运行的rsstail的主命令是每3秒检查一次最新的RSS,并使用以下命令获取第一个干净的3-5个字符,这是我需要的数字: rsstail -i 3 -u http://someserver/somefile.xml -n 1 -N | cut -c 3-5 它的输出是一个单一的数字,如 3.7 然后我需要不断地

我在阅读和If程序时有点搞砸了

我正在尝试为Linux创建一个bash脚本,它从rsstail读取经过处理的干净数值输出,如果数值输出大于5.5,那么它将执行我已有的另一个脚本

我正在运行的rsstail的主命令是每3秒检查一次最新的RSS,并使用以下命令获取第一个干净的3-5个字符,这是我需要的数字:

rsstail -i 3 -u http://someserver/somefile.xml -n 1 -N | cut -c 3-5
它的输出是一个单一的数字,如

3.7

然后我需要不断地比较数值输出,如果它大于5.5,那么执行我已有的另一个脚本。如果不是,则只需继续检查RSTAIL输出是否有大于5.5的值。您可以使用GNU
AWK
来执行此任务。按照以下方式,将您的输出(即具有以下值的单行)管道化

3.7
进入


这将对bash yourscript.sh执行
。请记住,执行操作系统命令,然后返回awk程序。Return命令的退出状态

由于您正在使用浮点数执行数值测试,因此可以调用
bc
来执行此任务

试一试


我得到第10行:添加
时出现意外标记“done”附近的语法错误
after
while true
解决了语法错误,抱歉。我在if@lefleflef我修正了我的代码,请检查它现在是否工作
awk '{if($1>5.5){system("bash yourscript.sh")}}'
#!/bin/bash

while true; do
  output=$(rsstail -i 3 -u http://someserver/somefile.xml -n 1 -N | cut -c 3-5)
  condition=$(echo "($output - 5.5) > 0" | bc)
  if [ "$condition" -eq 1 ]
    then echo "executing other script"
  fi
  sleep 3
done