Shell编程浅析


1.Shell中的特殊字符

#

注释

;

命令分割符,可以将多个语句放在一行执行

(单引号)

强引用,在单引号中无法引用变量

" "(双引号)

类似于,但支持变量替换

` `(反引号.tab键上方按键)

用于引用命令的执行结果

 

2.变量

命名规则:以字母开头,可以使用数字字母

变量定义:declare varName

变量赋值:varName=

变量值引用: $varName

导出变量: export varName[=value]

撤销变量: unset varName

特殊变量:

$?:返回上一条命令的状态返回值

$1,$2...:位置变量

$#:脚本传入的所有参数个数

$*,$@:返回脚本传入的所有参数

3.条件测试

使用格式:

test EXPR

[ EXPR ]

[[ EXPR ]]

 

文件测试

字符测试

整数测试

-a|-e FILE:是否存在

-S FILE:套接字文件

> :大于

-gt:大于

-f FILE:普通文件

-p FILE:命名管道文件

<:小于

-ge:大于等于

-d FILE:目录

-s FILE:是否为空文件

<=:小于等于

-eq:等于

-L FILE:符号链接文件

-r FILE:是否可读

>=:大于等于

-le:小于等于

-b FILE:块设备文件

-w FILE:是否各写

==:等于

-lt:小于

-c FILE:字符设备文件

-x FILE:是否可执行

!=:不等于

-ne:不等于

FILE1 -nt FILE2 :FILE1mtime是否新与FILE2

-n String :是否不空

 

FILE1 -ot FILE2 :FILE1mtime是否旧与FILE2

-z String:是否为空

 

 

4.输入输出和重定向

标准输入:0 默认设备为键盘

标准输出:1 默认设备为显示器

标准错误输出:2 默认设备为显示器

>::覆盖输出 &>错误覆盖输出

>> :追加输出 &>>错误覆盖输出

&>:合并重定向

<:输入重定向

<<:此处文档

tee:分流,将结果输出到屏幕并重定向

 

5.Shell脚本格式

第一行顶格"#!/path/to/a/shell"

6.常用语法结构

条件判断

语法格式

示例

单分支if语句

if 语句1;then

语句1执行结果为真则执行

else

语句1执行结果为假则执行

fi

 

1 2 3 4 5 6 7 8 #!/bin/bash a=1 b=1 if [ $a -eq $b ];then echo "yes" else echo "no" fi

多分支if语句

if 语句1;then

语句1执行结果为真则执行

elif 语句2;then

语句2执行结果为真则执行

...

else

所有条件都不满足时执行

fi

 

1 2 3 4 5 6 7 8 9 10 #!/bin/bash a=1 b=2 if [ $a -gt $b ];then echo "a>b" elif [ $a -lt $b ];then echo "a<b" else echo "a=b" fi

循环结构

for varName in LIST;do

循环体

done

1 2 3 4 #!/bin/bash for i in {1..10};do echo $i done

for ((var=#;测试条件;修正条件));do

循环体

done

1 2 3 4 #!/bin/bash for ((i=1;i<=10;i++));do echo $i done

while 条件语句;do #条件为真时进入循环

循环体

done

1 2 3 4 5 #!/bin/bash while ! who|grep “^gentoo”;do echo “gentoo is not login” sleep 3 done

until 条件语句;do

循环体

done

1 2 3 4 5 #!/bin/bash while who|grep “^gentoo”;do echo “gentoo is not login” sleep 3 done

条件选择

case $varName in

exp1)

语句体1 ;;

exp2)

语句体 2 ;;

...

*)

语句体 n ;;

1 2 3 4 5 6 7 8 9 10 #!/bin/bash tmp=y case $tmp in y|yes) echo yes ;; n|no) echo no ;; *) echo “unknown” esac

 

 

 

7.函数使用和循环条件控制

函数声明方式

1 2 3 4 5 6 7 function 函数名{ 函数体 }   函数名() { 函数体 }

 

函数使用方式

函数名 [参数....]

参数可以在函数体中用位置变量引用

循环条件控制

continue:提前进入下一轮循环

break #: #默认为1,跳出#层循环

Linux Shell参数替换

Shell for参数

Linux/Unix Shell 参数传递到SQL脚本

Shell脚本中参数传递方法介绍

Shell脚本传递命令行参数

本文永久更新链接地址:

相关内容