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"
  • 相关阅读:
    iSCSI又称为IPSAN
    文档类型定义DTD
    HDU 2971 Tower
    HDU 1588 Gauss Fibonacci
    URAL 1005 Stone Pile
    URAL 1003 Parity
    URAL 1002 Phone Numbers
    URAL 1007 Code Words
    HDU 3306 Another kind of Fibonacci
    FZU 1683 纪念SlingShot
  • 原文地址:https://www.cnblogs.com/junfblog/p/12684451.html
Copyright © 2011-2022 走看看