欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Shell 编程入门(三)

程序员文章站 2022-05-06 16:12:12
...

一、Case 判断

语法格式如下:

case VAR in
Var1) command1 ;;
Var2) command2 ;;
Var3) command3 ;;
...
*) command ;;
esac

一个显示当前操作系统名称的小 demo:

OS=`uname -s`
case "$OS" in
FreeBSD) echo "This is FreeBSD" ;;
AIX) echo "This is AIX" ;;
Linux) echo "This is Linux" ;;
*) echo "Other" ;;

Shell 编程入门(三)

二、循环

for 循环

语法格式如下:

for VAR in (list)
do
    command
done

一个打印字符串中以空格作为分隔符的所有字符串的列表的小 demo:

#!/bin/bash
aa="This is test"
for VAR in ${aa}
do
    echo "$VAR"
done

Shell 编程入门(三)

打印 1 到 5 这 5 个数的小 demo:

#!/bin/bash
for VAR in {1..5}
do
    echo $VAR
done

Shell 编程入门(三)

打印当前目录下的文件的小 demo:

for VAR in $(ls)
do
    echo "$VAR"
done

Shell 编程入门(三)

类 C 的 for 循环

格式语法如下:

for ((expression1; expression2; expression3))
do
    command
done

用类 C 语法打印 1 ~ 5 的小 demo:

#!/bin/bash
for ((i=1, j=10; i<=5; i++, j--))
do
    echo "$i  $j"
done

Shell 编程入门(三)

while 循环

语法如下:

while expression
do
    command
done

一个打印 3 2 1 的小 demo:

#!/bin/bash
CONT=3
while [ $CONT -gt 0 ]
do
    echo "$CONT"
    let CONT-=1
done

Shell 编程入门(三)

读取文件

#!/bin/bash
while read LINE
do
    echo `echo $LINKE`
done < 1.txt # < 这个小于号是重定向的意思,后面会讲

Shell 编程入门(三)

上面读取文件是通过重定向的方式来加载的文件,当然,也可以使用管道的方式来读取:

#!/bin/bash
cat aa.txt|while read LINE
do
    echo `echo $LINE`
done

select 循环

语法规则:

select MENU in (list)
do
    command
done

一个输出用户选择的城市的小 demo:

select City in ChangSha ChengDu BeiJing
do
    case $City in
    ChangSha) echo "Hunan" ;;
    ChengDu) echo "ChengDu" ;;
    BeiJing) echo "BeiJing" ;;
    *) echo "Unknow input" && exit 1 ;;
    esac
done

Shell 编程入门(三)

注:shell 中也有 breakcontinue 命令,和 Java 中的语法类似,按照 Java 中的语法规则使用即可。

三、函数

语法格式:

function FUNCTION_NAME(){
    command
}

使用函数输出一条语句:

function aa(){
    echo "this is function"
}
aa # 调用函数

Shell 编程入门(三)

如何向函数中传递参数?

Shell 中向函数传参是通过位置参数来实现的:

#!/bin/bash
function bb(){
    echo $1
    echo $2
    echo $3
}
bb $1 $2 $3

Shell 编程入门(三)

函数的作用就是减少重复的代码,因此我们很有必要建立自己的函数库:

  1. 新建一个 Shell 脚本,专门用来存放自定义的函数,一般作为函数库里面的函数以下划线开头,以便区分。

    myfun.sh文件内容如下:

    _checkFileExists(){
        if [ -f $1 ]; then
            echo "File:$1 exists"
        else
            echo "File:$1 not exists"
        fi
    }
  2. 通过 source 命令或者 . 引入我们建立的函数库脚本,使用:

    
    #!/bin/bash
    
    
    # . ./myfun.sh
    
    source ./myfun.sh
    _checkFileExists /etc/passwd

    Shell 编程入门(三)

四、重定向

输出重定向

  1. 标准输出覆盖重定向 >

    将命令的输出,重定向到其它的文件当中。

    Shell 编程入门(三)

  2. 标准输出追加重定向 >>

    将命令的输出,重定向追加到其他文件末尾。

    Shell 编程入门(三)

输入重定向

  • 标准输入重定向 <

    命令将从指定的文件中读取输入而不是键盘输入。

    Shell 编程入门(三)

相关标签: 重定向