关闭

Sheel 脚本 基本语句及逻辑关系比较

576人阅读 评论(0) 收藏 举报
分类:

Linux下的Sheel脚本编写比较重视格式。


1.sheel 的编写,每个文件第一行开头需要加上 #!/bin/bash

不该有的空格绝对不能加,否则就会出错。

表示变量内容时,需要加上$,如:s=1,需要用到s的数值时,需要写成$s。



2.利用判断符号   [  ]

判断符号有着严格的格式,空格不能够省略,空格的位置如下(□代表空格)

[□条件□==□条件□]

中间可以是等号也可以是其他比较符号



3.sheel脚本的默认变量。

sehll脚本的文件名字就是 $0 ,在执行该脚本的时候后面跟的参数依次为:$1 $2 $3 ......

$#:代表后接的参数“个数”

$@:代表"$1"、"$2"、"$3",每个变量是独立的(用双引号括起来)

$*:代表““$1c$2c$3””,其中c为分隔字符,默认为空格键。



4.shift 造成参数变量号码偏移

shift 默认偏移一个 ,shift 后也可以接数字, 即出现shift 语句后,变量会去掉前面相对应数字个数的变量。

如 原来变量为 1 2 3 4 5 6 ,出现shift后变成 2 3 4 5 6 ,再出现shift 3 后 ,变成 5 6



5.if...then 

if [条件判断式];then
    条件成立时执行的句子
fi  反过来写,结束的意思
注意:利用[ ]  写条件判断式的时候需要注意空格不能省略。

if...else

if [条件判断式];then
    成立时执行语句
else
    条件不成立时执行语句
fi  fi不可省略


if...elif...else

if [条件判断式1];then
    语句1
elif [条件判断式2];then
    语句2
else
    语句3
fi




6.case....esac

多重判断选择

case $变量名称 in
"第一个变量内容")
    执行语句
    ;;
"第二个变量内容")
    执行语句
    ;;
esac




7.function

function 名字(){
      执行语句
}

函数在执行时,也可以后面跟上参数,而这时在函数里面的$#,$@,$*之类的就是后面所跟的参数。



8.for...do...done

for var in con1 con2 con3...
do
    执行语句
done


var的数值依次为con1 con2 con3



9.for...do...done的另一个写法

for ((初始值;限制值;步进值))
do
    执行语句
done
例:计算1+2+。。。

#!bin/bash

s=0<span style="white-space:pre">	</span>#s赋初始值,不能有空格
read -p "input number:" x     #x前面有一个空格
for ((i=1;i<=$x;i=i+1))
do
        s=$(($s+$i))<span style="white-space:pre">		</span>#$(())格式应该是这样
done
echo "$s"



10.for do done,until do done

for do done

while [条件判断式]
do
    执行语句
done    结束语句

until do done

until [条件判断式]
do
    执行语句
done    结束语句



11.shell的追踪与调试

sh 后加参数 能够进行调试

-n:不用执行脚本,仅查询语句的问题

-v:再执行脚本前,先将脚本的内容输出的屏幕上

-x:将使用到的脚本内容显示到屏幕上


12.两个整数之间的判定

例如:test n1 -eq n2

-eq 两数值相等(equal)

-ne 两数值不能(not equal)

-gt n1大于n2(greater than)

-lt n1小于n2(less than)

-ge n1大于等于n2(greater than or equal)

-le n1小于等于n2(less than or equal)


13.文件的判断

1.关于文件名的“文件类型”判断

例如:test -e filename(满足条件为真,反之为假)

-e 该文件名是否存在

-f 该文件名是否存在且为文件

-d 该文件名是否存在且为目录

2.关于文件的权限检测

-r 检测该文件是否存在且具有“可读”的权限

-w 检测该文件是否存在且具有“可写”的权限

-x 检测该文件是否存在且具有“可执行”的权限

-u 检测该文件是否存在且具有“SUID”的属性

-g 检测该文件是否存在且具有“SGID”的属性

-k 检测该文件是否存在且具有“Sticky bit”的属性

-s 检测该文件是否存在且为“非空白文件”


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场