shell之读取/etc/passwd中user及其id

题目:
写一个脚本
1.设定变量FILE的值为/etc/passwd
2.依次向/etc/passwd中的每个用户问好,并且说出对方的ID是什么
形如:(提示:LINE=wc -l /etc/passwd | cut -d" " -f1)
Hello,root,your UID is 0.
3.统计一个有多少个用户

刚开始想的是一行一行读取文件,然后通过split函数分割数组的方式来输出相应的数组值,但是写完之后相当繁琐,看了一下网上的答案之后,才明白linux的这些命令的方便与强大,比如说cut、head、tail、wc等等。如果运用上它们,将会使我们的代码看上去更加简洁明了。
下面是修改后的代码。

#!/bin/bash
file="/etc/passwd"
line=`wc -l $file | cut -d" " -f1`

for I in `seq 1 $line`;do
    userid=`head -$I $file |tail -1| cut -d: -f3`
    username=`head -$I $file|tail -1 | cut -d: -f1`   
    echo "Hello,$username,your UID is $userid"
done
echo "there are $line users"

刚开始运行该脚本时,一直在这两行出现错误,当时我是这样写的

 userid = `head -$I $file |tail -1| cut -d: -f3`
 username = `head -$I $file|tail -1 | cut -d: -f1`

大家可以通过对比上面正确的代码看一下是什么错误?
原来我在运用等号赋值上面出现的问题。此处我将等号两边都空了格。shell在语法规定中赋值等号两边是不允许有空格的,所以这儿犯了一个基础错误。

你可能感兴趣的:(Linux)