美文网首页
09.条件循环语句、函数

09.条件循环语句、函数

作者: 哈哈大圣 | 来源:发表于2019-11-26 20:58 被阅读0次

条件循环语句、函数

一、条件语句

1). 基本的条件语句

  1. 常用方式
if [ boolean ]      # 注意中括号与变量之间有一个空格,必须写
then
    do something    # 条件成立执行逻辑
fi                  # if 语句块结束标志
  1. 其他方式
if [ boolean ]; then
    do something
fi
  1. 判断字符串是否相等可以使用“=”或者“==”;这点和其他语言有点差异,建议使用“==”;统一容易记忆
name=$1

if [ $name == "xiaoyu" ]   # 注意==左右有空格
then
    echo "hello $1"
fi
  1. else 分支
name1=$1     # 这里的赋值等号左右没有空格
name2=$2

if [ $name1 == $name2 ]   # 注意==左右有空格
then
    echo "you input the same names: $name1"
else
    echo "you input different names: $name1 $name2"
fi
  1. elif 分支
name=$1

if [ $name == "a" ]
then
    echo "you input a"
elif [ $name == "b" ]
then
    echo "you input b"
else
    echo "you input neither a or b; it's $name"
fi

2). 条件语句

  1. 测试字符串
条件 意义
[ str1 ==str2 ] 两个字符串是否相等,大小写敏感
[ str1 !=str2 ] 两个字符串是否b不相等,大小写敏感
[ -z $str ] 字符串是否为空
[ -n $str ] 字符串是否为不为空
#!/bin/bash

if [ -z $1 ]
then
    echo "No parameter"
else
    echo "There is at least one parameter"
fi
  1. 测试数字
条件 意义
[ num1 -eqnum2 ] 两个数字是否相等。和判断字符串所用的符号( = )不一样。eq 是 equal 的缩写,是英语“等于”的意思。
[ num1 -nenum2 ] 两个数字是否不同。ne 是 not equal 的缩写,是英语“不等于”的意思。
[ num1 -ltnum2 ] 数字 num1 是否小于 num2。lt 是 lower than 的缩写,是英语“小于”的意思。
[ num1 -lenum2 ] 数字 num1 是否小于或等于 num2。le 是 lower or equal 的缩写,是英语“小于或等于”的意思。
[ num1 -gtnum2 ] 数字 num1 是否大于 num2。gt 是 greater than 的缩写,是英语“大于”的意思。
[ num1 -genum2 ] 数字 num1 是否大于或等于 num2。ge 是 greater or equal 的缩写,是英语“大于或等于”的意思。
#!/bin/bash

if [ $1 -ge 10 ]
then
    echo "You have entered a number greater than 10 or equal to 10"
else
    echo "You have entered a number lower than 10"
fi

  1. 测试文件
条件 意义
[ -e $file ] 文件是否存在。e 是 exist 的首字母,表示“存在”。
[ -d $file ] 文件是否是一个目录。因为 Linux 中一切都是文件,目录也是文件的一种。d 是 directory 的首字母,表示“目录”。
[ -f $file ] 文件是否是一个文件。f 是 file 的首字母,表示“文件”。
[ -L $file ] 文件是否是一个符号链接文件。L 是 link 的首字母,表示“链接”。
[ -r $file ] 文件是否可读。r 是 readable 的首字母,表示“可读的”。
[ -w $file ] 文件是否可写。w 是 writable 的首字母,表示“可写的”。
[ -x $file ] 文件是否可执行。x 是 executable 的首字母,表示“可执行的”。
[ file1 -ntfile2 ] 文件 file1 是否比 file2 更新。nt 是 newer than 的缩写,表示“更新的”。
[ file1 -otfile2 ] 文件 file1 是否比 file2 更旧。ot 是 older than 的缩写,表示“更旧的”。
#!/bin/bash

read -p 'Enter a directory : ' file

if [ -d $file ]
then
    echo "$file is a directory"
else
    echo "$file is not a directory"
fi

3). 逻辑运算

符号 意义
[ a && b ] 两个&。表示“逻辑与”。此符号两端的条件必须全为真,整个条件测试才为真;只要有一个不为真,整个条件测试为假。
[ a || b ] 两个竖线。表示“逻辑或”。此符号两端的条件只要有一个为真,整个条件测试就为真;只有两个都为假,整个条件测试才为假。
[ ! boolean 非运算
#!/bin/bash

if [ $# -ge 1 ] && [ $1 == 'love' ] # 注意写法,每一个判断需要用中括号括起来
then
    echo "Great !"
    echo "You know the password"
else
    echo "You do not know the password"
fi
#!/bin/bash

read -p 'Enter a file : ' file

if [ ! -e $file ]
then
    echo "$file does not exist"
else
    echo "$file exists"
fi

4). case 多个条件

#!/bin/bash

case $1 in
    "Matthew")
        echo "Hello Matthew !"
        ;;
    "Mark")
        echo "Hello Mark !"
        ;;
    "Luke")
        echo "Hello Luke !"
        ;;
    "John")
        echo "Hello John !"
        ;;
    *)
        echo "Sorry, I do not know you."
        ;;
esac
  1. case $1 in$1 表示我们要测试的变量是输入的第一个参数。in 是英语“在…之中”的意思。
  2. "Matthew"):测试其中一个 case,也就是 $1 是否等于 "Matthew"。当然,我们也可以用星号来做通配符来匹配多个字符,例如"M*")可以匹配所有以 M 开头的字符串。
  3. ;;:类似于主流编程语言中的break;,表示结束 case 的读取,程序跳转到 esac 后面执行。
  4. *):相当于 if 条件语句的 else,表示“否则”,就是“假如不等于上面任何一种情况”。
  5. esac:是 case 的反写,表示 case 语句的结束。
  6. | : case中的多个条件
#!/bin/bash

case $1 in
    "dog" | "cat" | "pig")
        echo "It is a mammal"
        ;;
    "pigeon" | "swallow")
        echo "It is a bird"
        ;;
    *)
        echo "I do not know what it is"
        ;;
esac

二、循环语句

1). while循环

  1. 语法
while [ 条件 ]
do
    do something
done
while [ 条件 ]; do
    do something
done
  1. 案例
#!/bin/bash

let "sum = 0"

while [ $1 != "END" ]
do
    let "sum += $1"
    shift
done

echo "sum: $sum"

2). until循环

while循环相关的条件判断【鸡肋】

#!/bin/bash

let "sum = 0"

until [ $1 == "END" ]
do
    let "sum += $1"
    shift
done

echo "sum: $sum"

3). for循环

类似于Python中的for语法

  1. 案例
#!/bin/bash
for animal in 'dog' 'cat' 'pig'
do
    echo "$animal "
done
  1. 案例
#!/bin/bash

listfile=`ls`

for file in $listfile
do
    echo -e "file \n"
done
  1. 案例
#!/bin/bash

for file in `ls`
do
    echo -e "$file \n"
done
  1. 复制文件案例
#!/bin/bash

for file in `ls *.sh`
do
    cp $file $file-copy
done
  1. sql 序列命令
#!/bin/bash

for i in `seq 1 2 3 4 5 6 7 8 9`
do
    echo $i
done

三、函数

函数必须定义在使用之前!【解释性语言的特性】

1. 函数定义

函数名 () {
    函数体
}
function 函数名 {
    函数体
}
  1. 函数没有签名
  2. 函数的返回值只能为整型,表示执行结果,默认为0,正常
  3. 函数执行直接写函数名即可
#!/bin/bash

printSomething () {
    echo "xing zhe sun"
}

printSomething   # 调用函数

2. 为函数传递参数

./x.sh var1 var2 这种方式类似; 同样适用 $# $0 $1 $2 获取参数

#!/bin/bash

printVar () {
    echo "$# $0 $1 $2"
}

printVar 1 2

3. 函数返回的状态

如果返回值为整型,也可以直接返回当做函数的返回值

#!/bin/bash

printVar () {
    echo "$# $0 $1 $2"
    return 1
}

printVar 1 2

echo $?  # $? 为上一次函数运行的命令或者返回的状态,一般0代表正常

4. 变量的作用范围

  1. 默认一个变量是全局的
  2. 函数中创建的变量为局部变量

相关文章

  • 09.条件循环语句、函数

    条件循环语句、函数 一、条件语句 1). 基本的条件语句 常用方式 其他方式 判断字符串是否相等可以使用“=”或者...

  • C语言中必须会用的语句

    1、循环 循环语句有for(初值;条件;循环结束后执行)循环 while(条件)循环 do{函数}while(条件...

  • python基础-条件语句、循环语句

    键盘输入的内置函数:input字符串转换为int类型,内置函数str条件语句代码: 循环语句for: 循环语句wh...

  • C-ATM实战

    目的 通过模拟实现ATM相关功能,达到训练条件语句,循环语句,函数的作用 技术 switch语句,while循环与...

  • R语言(2) 入门

    1.条件与循环语句 条件语句 if 语句形式 例子: ifelse switch switch相当于一个函数,而且...

  • 零基础Java学习第四篇

    流程控制 条件语句 if条件语句 循环语句 while循环语句 for循环语句 循环语句嵌套

  • Linux结构化语句-条件与循环

    Linux结构化语句 条件语句 if循环语句: for 循环和 while循环 条件语句 if if 条件语句的常...

  • shell脚本_条件判断&流程控制

    一、if条件语句 二、case条件语句 三、for循环语句 四、while循环语句 五、until循环语句

  • 十二天,循环

    函数,循环。 循环语句由循环条件,循环变量,循环体组成,一般先声明变量,然后给出循环条件,最后执行循环体,数据满足...

  • Python官方教程阅读总结-流程控制

    常见的流程控制工具包括:条件控制语句, 循环控制语句,函数等,下面依次介绍 1. if 语句 用于条件判断,常见的...

网友评论

      本文标题:09.条件循环语句、函数

      本文链接:https://www.haomeiwen.com/subject/grnywctx.html