awk中是否有if语句比较文件中的单词?

时间:2019-05-04 18:20:26

标签: awk

我对任何编程和Shell脚本都是新手。

我正在尝试在shell脚本中创建if条件。 我习惯了一些用于密度泛函理论的计算代码(例如Quantum espresso)。

我想通过shell脚本使程序自动化。

我的代码产生case.data,它包含在结尾处($ 2,或者我们可以在第二列说)。 例如下面的脚本应该打印停止

cat case.data | tail -n 1 | awk '{print $2}'

因此,如果我从上述脚本中停止,则if语句不应产生任何内容,应执行其余文件。如果我没有从上述脚本中停止,则不应执行我文件中的可执行命令,而应执行包含exit的文本文件,以终止我的工作。

我尝试过的是:

#!bin/bash
#  Here I have my other commands that will give us case.data and below is my if statement.
STOP=$(cat $case.dayfile | tail -n 1 | awk '{print $2}')
if [$STOP =="stop"]
then
         echo "nil"
 else

    echo "exit" > exit
   chmod u+x exit
   ./exit
fi
#  here after  I have other executable that will be executed depending on above if statement

2 个答案:

答案 0 :(得分:0)

喜欢这个吗?:

if awk 'END{if($2!="stop")exit 1}' case.data
then 
    echo execute commands here
fi

答案 1 :(得分:0)

假设您出于某些原因确实确实希望在成功案例中打印“ nil”,则应将整个脚本更改为以下形式:

awk '{val=$2} END{if (val=="stop") print "nil"; else exit 1}' "${case}.data" || exit

,否则:

awk '{val=$2} END{exit (val=="stop" ? 0 : 1)}' "${case}.data" || exit

在给定条件下exit (val!="stop")和退出状态下true的相反值的情况下,我在最后一个脚本中使用了三进制,而不仅仅是success或类似名称。