您的位置:首页 > 运维架构 > Shell

Linux的SHELL学习指南

2015-09-08 16:40 501 查看
Linux

SHELL
学习指南

Linux

SHELL
学习指南

.
.............................................................................................................
1

变量
...........................................................................................................................................
2

Test
命令,用于条件判断
.......................................................................................................
3

控制流结构

.
..............................................................................................................................
4

变量 变量设置值的模式: Variable-name=value 设置实际值到Variable-name Variable-name+value 如果设置了Variable-name,则重设其值 Variable-name:?value 如果未设置Variable-name,显示未定义用户错误信息 Variable-name?value 如果未设置Variable-name,显示系统错误信息 Variable-name:=value 如果未设置Variable-name,设置其值 Variable-name:-value 同上,但是取值并不设置到Variable-name,可以被替换 例子: # colour=blue # echo “The sky is ${colour:-grey} tody” # The sky is blue tody 变量的显示:${values} # gero=”dir hard“ # echo ${gero} # dir hard 显示本地shell变量:set # set 清除变量的值:unset # pc=enterprise # echo ${pc} # unset pc # echo ${pc} 设置只读的变量:readonly # tape_dev=”/dev/rmt/on” # readonly tape_dev 环境变量: # CONSOLE=tty1 # export CONSOLE //CONSOLE为环境变量 查看环境变量:env 清除环境变量:unset CONSOLE 位置参数:$0,$1,$2…..$9 调用shell时,可以在后面加的参数,在shell里面可以根据位置得到输入的值。 特殊的变量参数:

$#
传递到脚本的参数个数

$*
以一个单字符串显示所有向脚本传递的参数。与位置变量不同,此参数可以超过
9


$$
脚本运行的当前进程
ID


$!
后台运行的最后一个进程的进程
ID


$@

$#
相同,但使用时加引号,并在引号中返回每个参数

$-
显示
shell
使用的当前选项,与
set
命令功能相同。

$?
显示最后命令的退出状态。
0
:没有错误,其他值表示有错误。

Test

命令,用于条件判断

格式:

test condition
或者

[ condition ]
0
标示成功,其他的标示失败。

文件状态的测试:

-d
:目录

-s
:文件长度大于
0
,非空

-f
:文件

-w
:可写

-l
:符号连接

-u
:文件有
suid
位置

-r
:可读

-x
:可执行

例子:

# [ -w scores.txt ]
# echo $?
# 0

//
成功

# test

w scores.txt
# echo $?
# 0

逻辑判断:

-a
:逻辑与,操作符两边均为真,结果为真,否正为假

-o
:逻辑或,操作符两边一变为真,结果为真。否则为假

!
:逻辑否。

例子:

# [ -w results.txt

a

w scores.txt ]
# echo $?
# 0

字符串测试:

=
:两个字符串相等

!=
:两个字符串不等

-Z
:空字符串

-n
:非空字符串

例子:

# [ -z $editor ]

# echo $?
# TAPE=

/dev/rmt0


# TYPE2=

/dev/rmt1


# [

$TAPE

=

$TAPE2

]
# echo $?
# 1

数字测试:

-eq
:数值相等“
=


-ne
:数值不相等“!
=


-gt
:第一个数大于第二个数“
>


-lt
:第一个数小于第二个数“
<


-le
:第一个数小于等于第二个数“
<=


-ge
:第一个数大于等于第二个数“
>=


例子:

# number=130
# [

$number



eq

130

]
# echo $?
# 0

#[

990



le

995

]

a [

123



gt

33

]
Sh

[

too many arguments
# [

990



le

995

-a

123



gt


33

]
# echo $?
# 0

Expr
:命令行计算器

# expr 30/3/2
# 5
# expr 10+10
# 20
Expr
的其他用法还很模糊,要细看

控制流结构

If then else
语句:

if [ test ]
then echo




elif [ test ]
then echo




else echo




fi

case
语句:

Case $V
AR in
1)
echo

1


;;
2|3|4)

//
或关系

echo

2|3|4


;;
*)

echo

*



esac
*
:任意字符

?:任意单个字符

[

]
:类或范围中的任意字符

For
循环:

for var in 1 2 3 4 5
do

echo

$var


done
Until
循环:

until [ test ]

//
直到为
true

echo
“”

done
While
循环:

While [ test ]

//
当判断条件为
true
时执行
do

do
echo
“”

done
Break

continue
控制循环:

Break
:跳出循环

Continue
:下一个循环

SHELL
函数

function hello(){
echo

hello `date`


}
调用时直接使用函数名称就可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: