我对任何编程和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
答案 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
或类似名称。