如何在bash脚本中使用for循环和if循环?

时间:2019-08-02 13:13:26

标签: bash shell

我有一个passwd文件,其中包含35000个用户,我只需要增加205个用户。我的脚本正在运行,并提供了详细信息。但是,它只给了我190个用户。我假设其他所有左用户在文件中都没有任何条目。 如果用户存在,我要使用if循环来放入找到的文件,如果不存在,则要使用if循环?

#!/bin/bash

##/tmp/users.txt is file in which you initialize unix ids

cat /tmp/users.txt | while read line

do

grep -w $line /var/yp/test/passwd | cut -d: -f1,2,3,5 >> /tmp/result.csv

##/tmp/result.csv will store the result

done;

2 个答案:

答案 0 :(得分:0)

更改

grep -w $line /var/yp/test/passwd | cut -d: -f1,2,3,5 >> /tmp/result.csv

    if grep -q -w $line /var/yp/test/passwd ; then
        grep -w $line /var/yp/test/passwd | cut -d: -f1,2,3,5 >> /tmp/result.csv
    else
        echo $line | cut -d: -f1,2,3,5 >> /tmp/not-found.csv
        echo ERROR: Not found: $line
    fi

-q使第一个grep不输出任何内容,它只是检查是否找到任何东西,然后if语句使用结果执行常规命令或报告错误。

“未找到”条目将在/tmp/not-found.csv中。

答案 1 :(得分:0)

您是否正在寻找类似的东西?

#!/bin/bash

cat /tmp/users.txt | while read line; do
   if grep -q -w $line /var/yp/test/passwd; then
      echo user $line found 
      grep -w $line /var/yp/test/passwd | cut -d: -f1,2,3,5 >> /tmp/result.csv
   else
      echo user $line not found
   fi
done
##/tmp/result.csv will store the result