shell编程(二)

case判断

前面了解了shell编程的if判断,其实除了if判断,还有case判断。python

case语法:shell

case VAR in express

case1) command1 ;;编程

case2) command2 ;;函数

case3) command3 ;;spa

...3d

*) command ;;blog

esacci

 

循环

除了判断,你们知道循环也是程序中很重要的一环,那么shell里面的循环是什么样的呢?字符串

带列表的for循环

和python中相似,此类for循环语法结构为

for var in list:

do

    command

done

list能够是一串字符,程序会按照空格分隔成多个单词的列表

 list也能够是1,2,3,4,5这样的数字

也能够是某个命令执行后的结果:

类C语言的for循环

语法:

for ((expression1;condition;expression2))

do

    command

done

这种状况和C语言的for循环相似,只是有两个小括号。例如

好,说到这里,咱们又能够作一个经典的问题了:打印出9X9乘法口诀表

其中echo -e 表示开启转义  \c 表示不换行 \n 表示换行。

上面这幅图应该让你们知道有什么做用了。

咱们看打印的乘法口诀,发现有点没有对齐,这对强迫症来讲,可能没法忍受,怎么办呢?其实在shell中,咱们除了echo能够打印以外,还能够用printf 这种C语言的打印方法

你们发现没有 printf默认没有换行,这就很不爽了。咱们能够在打印末尾加上\n

和其余语言同样,咱们能够在%s这里设置字符串的宽度、左右对齐方式等

前面负号表示左对齐,8表示一个占多少格,后面的.4表示要展现多少位,小数点也算一位

好,如今咱们再改良一下咱们的乘法口诀

while循环

基本用法:

while expression

do

  command

done

另外,while循环还能够用来读取文件

awk指令的做用后面会说。

上面的while循环这样写也是OK的

<  表示重定向输入,就是把test.sh看成前面指令的输入。

select循环

select循环是一种菜单扩展循环,语法和带列表的for相似,常和case一块儿连用

语法规则:

select menu in list

do

    command

done

其中 &&表示接着执行后面的语句 exit 1表示退出脚本,若是是break,就是退出循环,continue指跳过本轮循环,继续执行。

函数

Shell中的相比于Python的函数,要简单不少,同时功能也就简单不少

函数定义语法

#funciton为关键字,能够省略
function FUNCTION_NAME(){
    command1 #函数体中能够有多个语句,不容许函数内部为空
    command2
    ……
}

Shell中的向函数传递参数是经过位置参数来实现的

函数的做用就是减小重复代码,所以咱们须要创建本身的函数库

新建一个Shell脚本,专门用来存放自定义的函数,通常做为函数库里面的函数如下划线开头,以便区分


经过source 或者 . 均可以导入函数库

 

重定向


以前咱们都用echo来输出,可是若是咱们想把输出内容保存到文件中该怎么作呢?

>

标准输出覆盖重定向:将命令的输出,重定向输出到其余的文件当中

>>

标准输出追加剧定向:将命令的输出,重定向追加到其余文件末尾

<

标准输入重定向:命令将从指定的文件中读取输入而不是键盘输入

命令 说明
command > file 将输出重定向到 file。
command < file 将输入重定向到 file。
command >> file 将输出以追加的方式重定向到 file。
n > file 将文件描述符为 n 的文件重定向到 file。
n >> file 将文件描述符为 n 的文件以追加的方式重定向到 file。
n >& m 将输出文件 m 和 n 合并。
n <& m 将输入文件 m 和 n 合并。
<< tag 将开始标记 tag 和结束标记 tag 之间的内容做为输入。

 

 

 

 

 

 

 

 

 

须要注意的是文件描述符 0 一般是标准输入(STDIN),1 是标准输出(STDOUT),2 是标准错误输出(STDERR)。

相关文章
相关标签/搜索