Bash脚本,用于根据文件中的值行检查值

时间:2015-12-10 03:33:33

标签: bash

我在Linux中有一个脚本,它将检查从参数输入的数字。此$状态中的数字可能会有所不同。检查$ status中的代码是否在一组代码内之后的脚本代码。如果是,那么回声"它存在"。如果没有,那么回声"不存在。"

问题是代码组可能会发生变化,将代码更改为条件以反映这些更改是一件痛苦的事。所以我想将所有这些数字放在一个文件中。

例如:

脚本check.sh

$filecheck = "check.txt"
$status = $1
if [ $status EXISTS WITHIN $filecheck ]; then
  echo "It exists."
else
  echo "Does not exist."
fi

check.txt内容:

201
5099
305
8670
2
582
9582

运行:# ./check.sh 305

结果:It exists.

运行:# ./check.sh 689

结果:Does not exist.

问题是,我应该如何制定有条件的?我觉得这应该不是很难并涉及grep,但我不知道如何在谷歌中提出这个问题以获得我需要的结果,而且我也是bash脚本和Linux的初学者。实际上脚本不仅仅是这个,但我只需要条件部分,所以我简化了这个。感谢。

2 个答案:

答案 0 :(得分:3)

使用grep:

if grep -q "$1" "$filecheck" >/dev/null 2>&1; then
    echo "it exists"
else
    echo "it does not exist"
fi

答案 1 :(得分:1)

它看起来不像是一个bash脚本,但我想我得到了你的问题。您想要查找列表中是否存在给定数字。要做到这一点' grep -w ...'应该适合你,寻找完全匹配。请注意,它假定每个数字都在不同的行上。

所以你的shell脚本如下所示:

filecheck="check.txt"
status=$1

grep -w $status $filecheck >/dev/null 2>&1 
if [ $? -eq 0 ]; then
      echo "It exists."
else
      echo "Does not exist."
fi