|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
如果您觉得本篇CentOSLinux教程讲得好,请记得点击右边漂浮的分享程序,把好文章分享给你的好朋友们!Shell剧本使用及轮回语句
一.bash通配符:
1.?//恣意的单个字符
2.*//0个或多个字符
3.[]//区间内的恣意一个字符
4.;//支解下令,疏忽前一个下令的实行了局,持续实行前面的下令
5.&//背景实行步伐
6.&&//后面的下令实行乐成,前往值是0,实行前面的下令。
7.||//后面的下令实行失利,前往值非0,实行前面的下令。
8.|//管道
9.()//开启子shell,实行内里的下令
10.{}//内里的下令在以后shell实行
11.>>>//输入重定向
12.<<<//输出重定向
13.$//界说变量
14.//本义;下令的折行
15.``//挪用下令的实行了局;不成以嵌套
16.-//连字符;下令的选项的前导,---
17.//强援用标记;屏障特别字符
18.""//弱援用标记;``$这3个标记屏障不了
19.://暗示空操纵,前往值永久是0;while轮回
20.[:alnum:]//字母+数字
21[:alpha:]//字母
22[:lower:]//小写字母
23[:upper:]//年夜写字母
24[:digit:]//十进制数
25[:punct:]//标记
26[:space:]//空缺字符(空格“tab”)
27[[:alnum:]]//恣意的一个字母或数字[a-Z0-9]
28[^[:alnum:]]//取反
[[:alnum:]!]
二.变量
1.注重
(1)=的双方万万不要有空格
(2)不要利用$作为变量的名字
(3)变量名的长度--256个字符,辨别巨细写
2.怎样援用
(1)间接援用:
echo下令
-e:启用(反斜线)把持字符(
)的转换
-n:作废换行符
[root@tx1~]#echo"123 234"
123 234
[root@tx1~]#echo-e"123 234"
123234
[root@tx1~]#echo-e"123
234"
123
234
[root@tx1~]#echo-n"123 234"
123 234[root@tx1~]#
(2)直接援用
[root@tx1~]#a=b
[root@tx1~]#b=c
[root@tx1~]#echo$a
b
[root@tx1~]#echo${!a}
c
(3)变量的感化域
@1在以后的shell里,界说的变量叫做当地变量-部分变量。
@2全局变量-情况变量,export把部分变质变玉成局变量。只感化于子shell。
[root@tx1~]#x=123
[root@tx1~]#echo$x
123
[root@tx1~]#bash
[root@tx1~]#echo$x
[root@tx1~]#exit
exit
[root@tx1~]#exportx
[root@tx1~]#bash
[root@tx1~]#echo$x
123
(4)检察界说的变量
@1.set检察一切的变量
@2.env检察全局变量
@3.unset作废变量unset+变量名
@4.设置变量为只读:readonly+变量名
(5)地位参数$
注:地位参数,从下令行传送给剧本,大概是传送给函数.大概赋职给一个变量.
$0下令自己
$1$2......${10}
$#参数的个数
$*一切的参数
$@一切的参数(必要被””援用)
$$上一条下令的历程号
$?上一条下令的前往了局
$_上一条下令的最初一个参数
$!最初一个进进背景的下令的历程号
$()同等于``
$(())同等于$[]做数学运算的,可是只能算整数
(6)变量的置换
注:用来实行婚配大概是判别变量是不是存在。
@1.${变量名:-字符串}:假如变量是空的,那末就前往字符串;不然前往变量的值
@2.${变量名:+字符串}:假如变量有值,那末利用字符串交换变量;不然前往空值
@3.${变量名:=字符串}:假如变量没有值,那末就把字符串赋值给变量;不然前往变量的值
@4.${变量名:?提醒信息}:假如变量没有值,那末前往提醒信息
@1.
[root@tx1~]#echo$a
[root@tx1~]#echo${a:-123}
123
[root@tx1~]#b=abc
[root@tx1~]#echo${b:-123}
Abc
@2.
[root@tx1~]#echo${a:+123}
[root@tx1~]#echo${b:+123}
123
@3.
[root@tx1~]#echo$a
[root@tx1~]#echo$b
abc
[root@tx1~]#echo${a:=123}
123
[root@tx1~]#echo$a
123
[root@tx1~]#echo${b:=123}
abc
[root@tx1~]#echo$b
Abc
@4.
[root@tx1~]#unseta
[root@tx1~]#echo${a:?}
bash:a:parameternullornotset
[root@tx1~]#echo${a:?没有设置变量}
bash:a:没有设置变量
(7)变量的婚配形式
#:从变量的值的头部入手下手最小婚配,然后删除
##:从变量的值的头部入手下手最年夜婚配,然后删除
%:从变量的值的尾部入手下手最小婚配,然后删除
%%:从变量的值的尾部入手下手最年夜婚配,然后删除
:num1:num2:截取变量的值,num1是入手下手的地位,num2是截掏出来几位;0是第一个字符
@1.
[root@tx1~]#echo${pth#*/}
usr/bin/local/bin/all
[root@tx1~]#echo${pth##*/}
all
@2.
[root@tx1~]#echo${pth%/*}
/usr/bin/local/bin
[root@tx1~]#echo${pth%%/*}
[root@tx1~]#
@3.
[root@tx1~]#echo${pth:0:6}
/usr/b
[root@tx1~]#echo${pth:3:6}
r/bin/
三.If语句
1.单分支if语句.
if[前提表达式];then
下令;...
fi
注:前提满意的时分,就会运转then前面的语句,不满意就间接加入判别语句
2.双分支if语句
if[前提表达式];then
下令;...
else
下令;...
fi
注:等前提满意的时分就会运转then前面的语句,前提不满意的时分就运转else前面的语句。
3.前提表达式(mantest)
(1)字符串的判别
str1=str2反省str1与str2是不是不异
str1!=str2反省str1与str2是不是分歧
str1<str2反省str1是不是小于str2
str1>str2反省str1是不是年夜于str2
-nstr1反省str1的长度是不是年夜于0
-zstr1反省str1的长度是不是为0
=~:判别右边的字符串是不是可以被右侧的形式所婚配,[["$opt1"=~pattern]],注:判别字符串的时分,字符串要用""包起来(更具体的mantest)
(2)整数的判别
-eq即是
-ge年夜于即是
-gt年夜于
-le小于即是
-lt小于
-ne不即是
(3)文件的判别
-bfile判别是不是存在且为块文件
-cfile判别是不是存在且为字符文件
-dfile判别是不是存在且为目次文件
-efile判别文件是不是存在
-ffile判别文件是不是存在且为一个一般文件
-hfile判别是不是存在且为标记链接
-rfile判别是不是存在且可读
-sfile判别是不是存在且不为空
-wfile判别是不是存在且可写
-xfile判别是不是存在且可实行
-Ofile判别是不是存在且用户为以后用户
-Gfile判别是不是存在且组为以后组
(4)前提语句
与-a
if[表达式1-a表达式2]
或-o
if[表达式1-o表达式2]
非!
if[!表达式]
注
[[表达式1&&表达式2]]==-a
[[表达式1||表达式2]]==-o
[[!表达式]]==!
if表达式
then
command
elif表达式
then
command
elif表达式
then
command
......
else
command
fi
(5)多重判别
例1.
注:read-p
-t超不时间-t3(秒)
-s输出没有回显,(暗码)
[root@tx1~]#vimtx1.sh
#!/bin/bash
#这是一个判别文件范例的剧本
if[-b/dev/hda1]
then
echo"块装备" |
|