脚本练习

回复 收藏
写一个脚本:要求如下:
1:依次向/etc/passwd目录中的每一个用户问好,并指出其UID号!(eg:HELLO,root,your uid is 0)
2:统计这个脚本共有多少个账户?
参考脚本:
{{{密码回复可见}}}
2015-12-13 18:43 举报
已邀请:
0

agh353272297

赞同来自:

想了解下,你是如何学习shell脚本这块内容的呢。  我对这块学习起来感觉很费力。能指点下?
0

balich

赞同来自:

cut:
  1. #/bin/bash
  2. #2015-12-14
  3. #balich

  4. file="/etc/passwd"
  5. Line=`wc -l $file |cut -d " " -f1`

  6. for i in `seq 1 $Line`; do
  7.         username=`head -$i $file | tail -1 |cut -d: -f1`
  8.         userid=`head -$i $file |tail -1 |cut -d: -f3`
  9.         echo "hello $username,your UID is $userid"
  10. done
  11.         echo "there are $Line user"





awk:
  1. #/bin/bash
  2. #2015-12-14
  3. #balich
  4. file="/etc/passwd"
  5. Line=`wc -l $file |awk -F ' ' '{print $1}'`

  6. for i in `seq 1 $Line`; do
  7.         username=`head -$i $file | tail -1 |awk -F ':' '{print $1}'`
  8.         userid=`head -$i $file |tail -1 |awk -F ':' '{print $3}'`
  9.         echo "hello $username,your UID is $userid"
  10. done
  11.         echo "there are $Line user"



0

追风者

赞同来自:

cat /etc/passwd |awk -F ':' '{print "Hello:" $1 " your uid is :" $3}'
0

自己定义

赞同来自:

agh353272297 发表于 2015-12-13 19:35
想了解下,你是如何学习shell脚本这块内容的呢。  我对这块学习起来感觉很费力。能指点下?

其实,我也不太熟,也是新手!就是自己找些练习题,练练,自己想想,再练!
0

hzsnone

赞同来自:

学习下
0

zhangmengjun

赞同来自:

看看
0

空港

赞同来自:

dddddddddddddddddddddddddddd
0

空港

赞同来自:

哥们你这个脚本有bug啊  有些行显示$3是/sbin/nologin哦
0

1101066558

赞同来自:

awk -F ':' '{print "HELLO,"$1", your uid is "$3}' /etc/passwd

awk 'END{print NR}' /etc/passwd
0

1101066558

赞同来自:

awk -F ':' '{print "HELLO,"$1", your uid is "$3}' /etc/passwd
0

1101066558

赞同来自:

awk 'END{print NR}' /etc/passwd
0

oneliang

赞同来自:

1
0

yanggang

赞同来自:

看看
0

summer123

赞同来自:

学习
0

石头

赞同来自:

{:4_91:}
0

qiaoxin360

赞同来自:

  1. #!/bin/bash                                                                     
  2.   4                                                                                 
  3.   3 users=`awk -F':' '{print $1}' /etc/passwd`                                      
  4.   2 uid=`awk -F':' -v a=$i '$1==a{print $3}' /etc/passwd`                           
  5.   1 for i in $users;do                                                              
  6. 6       echo "HELLO, $i,your uid is `awk -F':' -v a=$i '$1==a{print $3}' /etc/passwd`"                     
  7.   1 done      
0

robert

赞同来自:

#!/bin/bash

name=`cat /etc/passwd |awk -F: '{print $1}'`

for u in $name
do
    i=`id $u |awk -F'=' '{print $2}' |awk -F'(' '{print $1}'`
    uid_num=`grep $u:x /etc/passwd |awk -F: '{print $3}'`

    if [ $i == $uid_num ]
    then
        echo "Hello $u, your uid is $i !"
    else
        echo "Wrong!!!"
    fi

done

y=`cat /etc/passwd |wc -l`
echo "There are $y users."
0

linux-小莫

赞同来自:

学习
0

jinm

赞同来自:

学习
0

loveyouhyf

赞同来自:

awk -F ':' '{print "HELLO,"$1,"your uid is",$3}' /etc/passwd
wc -c < /etc/passwd
0

nihao426181

赞同来自:

^^^^^^^
0

Remember犬牙

赞同来自:

想不起来了,
0

大仔黑黑

赞同来自:

   {:4_91:}{:4_91:}{:4_91:}
0

369666951

赞同来自:

1
0

weifeng1463

赞同来自:

ok
0

maria

赞同来自:

{:4_97:}这个不会了,来看看答案吧
0

malong

赞同来自:

看看
0

huguihua2002

赞同来自:

看看
0

Landon

赞同来自:

本帖最后由 Landon 于 2016-1-3 17:50 编辑

我使用了数组存放的方式
进行了用户的排列 从0开始上升!如果只是打印不好玩!
#!/bin/bash
uid=`cat /etc/passwd|awk -F ':' '{print $3 ,$1}'|sort -n|awk '{print $1}'`
user=`cat /etc/passwd|awk -F ':' '{print $3 ,$1}'|sort -n|awk '{print $2}'`
sum=0
for a  in $user
    do
     ((sum=$sum+1))
      us[$sum]=$a
done
n=`echo $sum`
sum2=0
for b in $uid
   do
    ((sum2=$sum2+1))
      ui[$sum2]=$b
done

for i in `seq 1 $n`
   do
      echo  "Hello ,UID:${ui[$i]}, USER :${us[$i]}"
donenum=`wc -l /etc/passwd`
echo "total account $num"



0

thedawn

赞同来自:

1
0

andreking

赞同来自:

学习下
0

汤小东

赞同来自:

check
0

hlymlv

赞同来自:

#!/bin/bash c=`cat /etc/passwd|wc -l` for i in `seq 1 $c`;do
user=`sed -n "$i"p /etc/passwd|awk -F ':' '{print $1}'`
uid=`sed -n "$i"p /etc/passwd|awk -F ':' '{print $3}'`
echo "Hello,$user your uid is $uid."
done
echo $c
exit 0

0

casparcc

赞同来自:

xuexi
0

HwangChen

赞同来自:

look
0

wzwyql

赞同来自:

看一下
0

何朝晖

赞同来自:

学习
0

laige521

赞同来自:

{:4_98:}前来学习
0

licengceng

赞同来自:

学习
0

skylake_

赞同来自:

kankan
0

skylake_

赞同来自:

我只想说/etc/passwd :之间有空格就不对了
0

t0ny1988

赞同来自:

我想到的就是 for嵌套循环,不过怎么不知道该怎么写,总是循环多次。
0

wsw13640218682

赞同来自:

本帖最后由 wsw13640218682 于 2016-1-30 02:00 编辑

#!/bin/bash
a="/etc/passwd"
b="/root/b"
if  awk -F: '{print "hello," $1"," " your uid is " $3 }' $a > $b
then
  cat $b
  awk '{print $2}' $b |wc -l
fi

0

ttly123

赞同来自:

学习学习
0

Rohero

赞同来自:

卡卡
0

sysf1

赞同来自:

学习
0

21emerald

赞同来自:

#!/bin/bash
awk -F: '{print "Hello, " $1 ", your uid is " $3}END{print "共" NR "用户"}' /etc/passwd
0

奋斗的种子

赞同来自:

看看
0

我是学渣

赞同来自:

{:4_99:}
0

lin13750529011

赞同来自:

谢谢
0

不怕不怕

赞同来自:

参考学习
0

goldseal

赞同来自:

我来看看
0

wangzai

赞同来自:

学习
0

snake

赞同来自:

看看
0

snake

赞同来自:

看看
0

rolay8

赞同来自:


  1. #!/bin/bash

  2. num=0
  3. cat /etc/passwd | while read line
  4. do
  5.     user=`echo -n $line | awk -F ':' '{print $1}'`
  6.     uid=`echo -n $line | awk -F ':' '{print $3}'`
  7.     echo "HELLO,${user},your uid is ${uid}!"
  8.     ((num++))
  9.     echo $num
  10. done
  11. echo "There is ${num} users!"
0

向南看是晴空

赞同来自:

学习了
0

a57601247

赞同来自:

本帖最后由 a57601247 于 2016-3-28 18:01 编辑

#!/bin/bash
File="/etc/passwd"
for i in `cat $File`;
do
   user=`echo $i | cut -d  ':' -f 1`
   uid=`echo $i | cut -d  ':' -f 3`
   echo "hello,$user your uid is $uid"
done
a=`wc -l $File`
d=`echo $a |cut -d ' ' -f 1`
echo "There are $d  uesrs"

0

超大大

赞同来自:

学习
0

拉卡

赞同来自:

学习一下,主要是没有思路
0

Achilles - 网络底层维护

赞同来自:

感谢分享……
0

shc1985

赞同来自:

看看对吗
0

hsm

赞同来自:

学习
0

jonnylin

赞同来自:

学习
0

a1138665328

赞同来自:

kk
0

jokerhuman

赞同来自:

学习学习
0

吴天瑞

赞同来自:

学习
0

吴天瑞

赞同来自:

学习
0

吴天瑞

赞同来自:

学习
0

午夜DJ

赞同来自:

#! /bin/bash
cat /etc/passwd |awk '{print $1 $3}' > 1.txt
x=`wc -l 1.txt`
i=1
if [ $i -le $x ];then
a=`sed '$i'p 1.txt |cut -f1`
b=`sed '$i'p 1.txt |cut -f2`
echo "HELLO,$a,your uid is $b "
i=$[$i+1]
fi
echo "this scripts total $x users"

0

luckytodd

赞同来自:

#!/bin/bash

user_num=`cat /etc/passwd |awk -F':' '{print $1}' |wc -l`
for i in `seq 1 $user_num`
do
   user=`cat /etc/passwd |head -$i |tail -1 |awk -F':' '{print $1}'`
   uid=`cat /etc/passwd |head -$i |tail -1 |awk -F':' '{print $3}'`
   echo "HELLO,$user,your uid is $uid"
   done
echo "There are $user_num users."
0

402184660

赞同来自:

学习下
0

Bullet_Point

赞同来自:

1
0

十月鱼

赞同来自:

学习
0

wy1028

赞同来自:

{:4_91:}
0

hhao

赞同来自:

1

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: