Shell 编程入门(三)

一、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 编程入门(三)_第1张图片

二、循环

for 循环

语法格式如下:

for VAR in (list)
do
	command
done

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

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

Shell 编程入门(三)_第2张图片

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

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

Shell 编程入门(三)_第3张图片

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

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

Shell 编程入门(三)_第4张图片

类 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 编程入门(三)_第5张图片

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 编程入门(三)_第6张图片

读取文件

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

Shell 编程入门(三)_第7张图片

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

#!/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 编程入门(三)_第8张图片

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

三、函数

语法格式:

function FUNCTION_NAME(){
	command
}

使用函数输出一条语句:

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

Shell 编程入门(三)_第9张图片

如何向函数中传递参数?

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

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

Shell 编程入门(三)_第10张图片

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

  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 编程入门(三)_第11张图片

四、重定向

输出重定向

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

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

    Shell 编程入门(三)_第12张图片

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

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

    Shell 编程入门(三)_第13张图片

输入重定向

  • 标准输入重定向 <

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

    Shell 编程入门(三)_第14张图片

关注我的微信公众号(曲健磊的个人随笔),观看更多精彩内容:
Shell 编程入门(三)_第15张图片

你可能感兴趣的:(【Linux系列】)