以下是我的要求。我有一个包含以下内容的文本文件
File name - abc.txt
Content -
apple=0
mango=1
strawberry=10
仅当上述变量中的任何一个具有非零值时,我才需要启动后续过程。
在这种情况下,由于两个变量的值分别为1和10,因此我需要更新指标-SKIP INDICATOR = N
如果所有变量的值均为0,我需要更新SKIP INDICATOR = Y
如何在Linux中实现此功能。请告知。
答案 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=01
或a= 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