五个简单的shell脚本
1、编写shell脚本 ex1.sh,提示用户输入用户名,并判断此用户名是否存在。
(提示:利用read、grep和/etc/passwd)
#!/bin/bash echo "请输入用户名" read username #相当于scanf if grep $username /etc/passwd; then #if的结尾要有fi echo "存在" else echo "不存在" fi
2、 编写shell脚本 ex2.sh,能将命令行参数相加并输出,如: ex2 1 3 8输出结果为12。
(提示:利用$@和循环结构)
#①可以把命令行的任意个数字相加 #!/bin/bash sum=0 #赋初值 for var in $@ #命令行的所有值 用以循环 do sum=$[$sum+$var] #$相当于地址符 done echo "$sum" #②可以把命令行三个数相加 #!/bin/bash CITY=SUM; let SUM=$1+$2+$3 echo "$SUM"
3、 编写shell脚本 ex3.sh,能将命令行参数所代表的文件统计行数,相加并输出结果,如: ex3 file1 file2 file3 ,统计三个文件的行数的总数。
(提示:利用$@和循环结构)
#!/bin/bash sum=0 nub=0 for var in "$@" do nub=$(sed -n '$=' $var) #读取文件中数据的行数 sum=$[$sum+$nub] done echo "$sum"
4、 编写shell脚本 ex4.sh,将当前目录下的.c文件移到命令行参数指定的目录下,并按文件大小排序,显示移动后指定目录的内容。
(提示:利用$1,sort和ls)
#!/bin/bash echo "请输入地址:" read addr #scanf输入地址 mv ./*.c $addr # ./表示当前目录 *.c表示所有一.c结尾的文件 mv移动操作 ls -S $addr #ls 显示当前目录下的文件夹 -S将文件大小排序
5、 编写shell脚本 ex5.sh,输出命令行参数中的最大数,如: ex2 1 3 8输出结果为8;如果命令行参数中有非数字参数则报错。
(提示:利用$@、循环结构和分支判断)
#!/bin/bash max=$1 for var in "$@" do if [[ $var != *[!0-9]* ]];then #*X*匹配任何包含x的字符串(开头,中间或结尾),[!0-9]匹配任何非0-9的字符,合起来就是匹配没有0-9的字符 if [ $var -gt $max ];then #比较var和max的大小 -gt表示">" max=$var fi else echo "含有其他字符" exit #结束 fi done echo "$max"