我正在尝试编写一个bash脚本,该脚本需要两个不同的输入。一个是每行有一个用户的文件。例如,我当前正在测试的文件是: 彼得 罗杰 卡西 克洛伊 挡泥板 第二个输入是输出应通过管道传输到的位置。我们要对这两个输入执行的操作是转到每个用户的主目录,并查找5个文件(名为a,b,c,d,e)。然后,我们要计算每个用户拥有的这五个文件中的多少个。我知道正确的数字/输出应该是: 彼得3 罗杰1 卡西2 克洛伊5 挡泥板,0 但是,我不确定如何到达这里,因为我之前从未做过bash脚本编写,所以我不在这里。
我试图在while循环内使用for循环(如下所示)
while read line; do
counter=0
for i in a b c d e
do
# /var/www/html/user_name/ is the home directory given to us in the problem
if [-e/var/www/html/$line/$i];
then
let counter = $counter + 1
fi
# would need to pipe $line,counter into $2 but not sure how
done
done
如上所述,我只需要NAME,COUNT形式的输出,就需要将其通过管道输入到用户作为第二个参数输入的任何位置。
答案 0 :(得分:0)
首先,我将建立目录路径。然后将ls
与egrep
和wc
一起使用以获取计数。假设您的文件是test.txt
,看起来像
while read line; do
printf "%s,%s\n" $line $(ls /var/www/html/$line | egrep "^[a|b|c|d|e]$" | wc -l)
done < test.txt