shell脚本编程练习

练习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:]]*

 

shell脚本编程练习

上一篇:inotify和rsync实现数据实时同步


下一篇:linux运维常用命令