练习1
设定变量FILE的值为/etc/passwd,并依次向其中的每个用户问好,说出对方的id,最后统计一共有多少个用户
1 #!/bin/bash 2 file="/etc/passwd" 3 lines=wc -l $file | cut -d " " -f1 4 for i in `seq 1 $lines`;do 5 userid=head -$i $file | tail -1 |cut -d: -f3 6 username=head -$i $file | tail -1 | cut -d: -f1 7 echo "hello $username, your UID is $userid" 8 done 9 echo "there are $lines users"
练习2
切换工作目录至/var,依次向/var目录中的每个文件或子目录问好
#!/bin/bash cd /var let num=0 for i in `ls`;do echo "hello $i" num=$[$num+1] done echo "the number of files is $num"
练习3
设定变量的值为/etc/passwd,使用循环读取文件中的第2,4,6,10,13,15行,并显示其内容,将这些内容保存至/tmp/mypasswd中
#!/bin/bash file="/etc/passwd" exec 3 > /tmp/mypasswd for f in 2 4 6 10 13 15;do line=`sed -n "${f}p" $file` echo "$line" echo "$line">&3 done exec 3>&-
练习4
传递两个整数给脚本,让脚本分别计算并显示这两个整数的和,差,积,商
#!/bin/bash echo "输入的第一个数为$1" echo "输入的第二个数为$2" echo "二数之和为$[$1+$2]" echo "二数之差为$[$1-$2]" echo "二数之积为$[$1*$2]" echo "二数之商为$[$1/$2]"
练习5
创建目录/tmp/scripts,切换工作目录至此目录中,复制/etc/pam.d目录到当前目录,并改名为test,将当前目录的test及其里面的文件和子目录的属主改为redhat,将test及其子目录中的文件的其它用户权限改为没有任何权限
#!/bin/bash mkdir -v /tmp/scripts cd /tmp/scripts cp /etc/pam.d ./test chown -R redhat ./test chmod -R o=--- ./test
练习6
显示当前系统日期和时间,然后创建目录/tmp/lstest,切换工作目录至/tmp/lstest,创建目录a1d, b56e, 6test,创建空文件xy, x2y, 732,列出当前目录下以a, x或者6开头的文件或目录,列出当前目录下以字母开头,后跟一个任意数字,而后跟任意长度字符的文件或目录
#!/bin/bash date mkdir -v /tmp/lstest cd /tmp/lstest mkdir a1d b56e 6test touch xy x2y 732 ls [ax6]* ls [[:alpha:]][[:dight:]]*