五个简单的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"

 

posted @ 2020-04-12 11:51  创造bug的夫  阅读(1250)  评论(0编辑  收藏  举报