zoukankan      html  css  js  c++  java
  • 五个简单的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"
  • 相关阅读:
    tyvj4751 NOIP春季系列课程 H's Problem (树状数组)
    卡牌分组([AtCoder ARC073]Ball Coloring)
    bzoj1036 [ZJOI2008]树的统计Count (树链剖分+线段树)
    bzoj2287 POJ Challenge 消失之物(背包)
    不能建立引用数组
    CString和string的区别
    防止应用程序重复启动
    public,protected,private
    ATL
    c++头文件中定义全局变量
  • 原文地址:https://www.cnblogs.com/junfblog/p/12684451.html
Copyright © 2011-2022 走看看