zoukankan      html  css  js  c++  java
  • Shell 学习(三)

    Shell 学习(三)

    流程控制

    1 if判断

    • 基本语法
    if [ 条件判断式 ];then 
    程序
    fi
    
    或者
    
    if[ 条件判断式 ]
    	then
    		程序
    		elif[ 条件判断式 ]
    			then
    				程序
    fi
    

    注意事项:(1) [ 条件判断式 ],中括号和条件判断式之间必须要有空格。(2) 推荐使用第二种方式

    • 应用实例

    案例: 编写一个shell程序,请输入参数,大于等于60,则输出“及格了”,如果小于60,则输出“不及格”

    #!/bin/bash
    if [ $1 -ge 60 ]
    	then 
    		echo "及格了"
    elif[ $1 -lt 60]
    	then
    		echo "不及格"
    fi
    

    2 case 语句

    • 基本语法

    这个case语法很不一样,我开始很不习惯,有点像C的感觉

    case $变量名 in
    "值1")
    	如果变量的值等于值1,则执行程序1
    ;;
    "值2")
    	如果变量的值等于值2,则执行程序2
    ;;
    ···省略其他分支···
    *)
    如果变量的值都不是以上的值,则执行此程序
    ;;
    esac
    
    • 应用实例

    案例:当命令行参数是1时,输出“周一”,当参数是2时,输出“周二”,其他情况输出other。

    #!/bin/bash
    case $1 in
    "1")
    	echo "周一"
    ;;
    "2")
    	echo "周二"
    ;;
    *)
    	echo "other"
    ;;
    esac
    

    3 for循环

    • 基本语法1
    for 变量 in 值1 值2 值3 ..
    do	
    	程序
    done
    

    应用实例

    打印命令行输入的参数[会使用到$* 和$@]

    #!/bin/bash
    #使用$*
    for i in "$*"
    do
    	echo "the num is $i"
    done
    
    echo "====="
    #使用$@
    for j in "$@"
    do
    	echo "the num is $j"
    done
    

    执行后为这样:

    • 基本语法2

      这个语法就很像java中的for循环

    for((初始值;循环控制条件;变量变化))
    do
    	程序
    done
    

    应用实例:从1加到100的值输出显示

    但是这个很奇怪,前面判断条件都是用-gt -ge 来着。这里可以直接用<=

    #!/bin/bash
    #定义一个变量
    SUM=0
    for((i=0;i<=100;i++))
    do
    	SUM=$[$SUM+$i]
    done
    echo "sum=$SUM"
    

    4 while 循环

    • 基本语法
    while [ 条件判断式 ]
    do
    	程序
    done
    

    应用实例

    案例:从命令行输入一个数n,统计从1+...+n 的值是多少

    #!/bin/bash
    SUM=0
    i=0
    while [$i -le $1]
    do
    	SUM=$[$SUM+$i]
    	i=$[$i+1]
    done
    echo "sum=$SUM"
    

    2 read 读取控制台输入

    2.1 基本语法

    read (选项)(参数)
    选项:
    -p : 指定读取值时的提示符
    -t : 指定读取值时等待的时间(秒),如果没有在指定的时间内输入,就不再等待了。
    参数:
    变量:指定读取参数的变量名
    

    2.2 应用实例

    案例一:读取控制台输入一个num 值

    案例二:读取控制台输入一个num值,在10秒内输入

    #!/bin/bash
    read -p "请输入一个数num1="NUM1
    echo "你输入的值是num1=$NUM1"
    read -t 10 -p "请输入一个数num2="NUM2
    echo "你输入的值是num2=$NUM2"
    

    3 函数

    3.1 系统函数

    • basename 基本语法
    功能:返回完整路径最后 / 的部分,常用于获取文件名
    basename[pathname][suffix]
    basename[string][suffix](功能描述:basename命令会删掉所有的前缀包括最后一个('/')字符,然后将字符串显示出来)。
    选项:
    suffix为后缀,如果suffix被指定了,basename会将pathname或string中的suffix去掉
    
    • dirname 基本语法
    功能:返回完整路径最后 / 的前面的部分,常用于返回路径部分
    dirname 文件绝对路径(功能描述:从给定的包含绝对路径的文件名中去除文件名(非目录部分),然后返回剩下的路径(目录的部分))
    

    3.2 应用实例

    • 案例1:请返回 /home/aaa/test.txt 的“test.txt” 部分

    • 案例2:请返回 /home/aaa/test.txt 的/home/aaa

    3.3 自定义函数

    • 基本语法
    [function] funname[()]
    {
    	Action;
    	[return int;]
    }
    

    调用直接写函数名 : funname[值]

    • 应用实例
    • 案例1:计算输入两个参数的和(read),getSum
    #!/bin/bash
    function getSum(){
    	SUM=$[$n1+$n2]
    	echo "和是=$SUM"
    }
    read -p "请输入第一个数n1" n1
    read -p "请输入第二个数n2" n2
    
    #调用getSum
    getSum $n1 $n2
    
  • 相关阅读:
    数据库基础-INDEX
    LINQ教程
    NPOI导出EXCEL
    WPF数据双向绑定
    WPF控件数据单项绑定
    HelloWorld IL代码
    Python基础教程(英文视频教学)
    ado.net的5个主要对象
    Linux学习-0627
    C#中Abstract和Virtual
  • 原文地址:https://www.cnblogs.com/jianshuai520/p/11806881.html
Copyright © 2011-2022 走看看