迭代文件中的变量以检查bash中的特定值

时间:2019-02-21 14:40:01

标签: linux bash

以下是我的要求。我有一个包含以下内容的文本文件

File name - abc.txt
Content -
apple=0
mango=1
strawberry=10

仅当上述变量中​​的任何一个具有非零值时,我才需要启动后续过程。

在这种情况下,由于两个变量的值分别为1和10,因此我需要更新指标-SKIP INDICATOR = N

如果所有变量的值均为0,我需要更新SKIP INDICATOR = Y

如何在Linux中实现此功能。请告知。

3 个答案:

答案 0 :(得分:1)

很简单的一瞥:

if [ $(grep '=' your_file | grep -v '=0') ]
then 
  echo "non zero values detected"
  SKIP_INDICATOR=N
else
  echo "all are zeroes"
  SKIP_INDICATOR=Y
fi   

请注意,这是一种快速且肮脏的解决方案,如果您有a=01a= 0(例如,有空格),它将无法正常工作

答案 1 :(得分:0)

尝试:

grep -q '=0*[1-9]' textfile && skip_indicator=N || skip_indicator=Y

=0*[1-9]匹配一个'='字符,后跟零个或多个'0'字符,后跟一个1到9之间的数字。

有关为何将SKIP_INDICATOR更改为skip_indicator的解释,请参见Correct Bash and shell script variable capitalization

答案 2 :(得分:-1)

#!/bin/bash
flag=`awk -F'=' '$NF!="0"{print;exit}' input`
if [ ! -z $flag ] ; then
    SKIP_INDICATOR=N
    echo "some variable value is different from 0. do something"
else
    SKIP_INDICATOR=Y
    echo "all variables have 0 as value. do another thing."
fi
exit 0