shell script学习笔记

shell学习笔记

什么是shell?

shell是运行在linux服务器上的用c语言编写的程序,即可以是服务器端的命令语言,也可以是程序设计语言(shell script)。平时所说的shell,多指在shell的界面端进行shell script编程。

shell脚本的执行过程

bash 程序目录/程序文件.sh

sh 程序目录/程序文件.sh

./程序文件.sh

shell的注释,#号。shell不支持多行注释

___________________________________________________________________________________________________________________________

                                           shell的字符串

shell的hello world:

#!/bin/bash //第一行的#!是一个约定语言,告诉系统用哪一种shell来执行

echo "Hello World !"

bash 程序文件.sh

shell的变量:

say_hello=“Hello,I am shell script”

变量的使用:

echo $say_hello

echo ${say_hello}

只读变量

readonly MVP=‘stephen curry’ //定义为只读变量,修改无效

删除变量

unset MVP //删除定义的MVP变量,不可删除只读变量

打印变量和字符串

mvp=“kevin durant”

echo “the nab 2016-2017 MVP is $mvp” //输出“the nab 2016-2017 MVP is kevin durant”,双引号输出字符和变量,单引号原样输出  字符。类似php

获取字符串长度

mvp=“kevin durant”

echo ${#mvp} //输出12

___________________________________________________________________________________________________________________________

                                           shell的数组

shell仅支持一维数组,并且没有限定数组的大小

定义数组:

#style 1

playerlists=('curry' 'durant' 'green' )

#style 2

playerlists=(

'curry'

'durant'

'green'

)

#style 3

playerlists[0]='curry'

playerlists[1]='durant'

playerlists[2]='green'

读取数组元素

playerlists=('curry' 'durant' 'green' )

echo ${playerlists[2]} //green

获取数组个数

playerlists=('curry' 'durant' 'green' )

echo ${#playerlists[@]} //3

————————————————————————————————————————————————————————

                                        脚本传递参数

bash first.sh hello world

vim first.sh

#!/bin/bash

echo “文件名称为$0”

echo “第一个参数为$1”

echo “第二个参数为$2”

其他与定义变量

$# //传递参数个数

$* //以字符串格式显示所有传递的参数

————————————————————————————————————————————————————————

                                        shell 运算符

加法示例:

val=`expr 2 + 2 `

echo $val

详解:表达式不是被单引号所括起,是esc下面的“反单号”

反单号最前需要加上expr。

所有语法单量,需要用空格隔开,即:`expr num + num`

支持的算数运算符包含:+、-、*(表达式中需要加\反斜杠)、/、%

运算运算符有:

= //赋值,实例:$a=$b,将b的值赋值给了a

!= //比较相等[$a==$b]

== //比较不等[$a!=$b]

注意:件表达式要放在方括号之间

关系运算符

-eq //比较两个数是否相等。相等返回true。[ $a -eq $b ]。返回false

-nq //比较两个数是否不相等。不相等返回true。[ $a -nq $b ]。返回true

-lt //检测左边数是否小于右边数。

-gt //检测左边数是否大于右边数。

布尔运算

! //[ ! false ]

-o //or,或运算

-a //and,与运算

逻辑运算

&& //and

|| //or

————————————————————————————————————————————————————————

                                        echo语句

普通打印:

echo “word”

显示命令执行结果:

echo `date` //date是linux服务器关键字

————————————————————————————————————————————————————————

                                        test命令

test:用于检测某个命令条件是否成立,可以是数值、字符、文件三个方面的测试

格式:

a=“hello”

b=“world”

if test $[a] -eq $[b]

the

echo ‘yes’

else

echo ‘no’

fi

————————————————————————————————————————————————————————

                                       流程控制

if-else:

if condition

then

command1

else

command2 //流程控制不能为空(和php等其他语言区别)

fi

if-elif-else:

if condition

then

command1

elif condition

then

command2

else

command3

fi

for循环:

#! bin/sh

for((i=1; i<=100; i++))

do

    echo $i //输出1-100

done

~    

exit

while循环:

while condtion

do

command

done

无限循环格式:

while :

do

command

done

————————————————————————————————————————————————

                             方法使用

普通输出:

#! bin/sh

function sayhello(){

 echo 'hello china'

}

echo '------begin------'

sayhello

echo '------end--------'

传值:

#! bin/sh

warriors(){

echo 'c:'.$1

echo 'cg:'.$2

echo 'pg:'.${3}

echo 'pf'.$4

}

warriors mcGee curry thompson durant

c:.mcGee

cg:.curry

pg:.thompson

pf.durant

返回值:

#! bin/sh

jia(){

return $(( $1 + $2 ))

}

jia 2 4

echo "2+4= $? "

————————————————————————————————————————————————

                             文件引用

. filename  #注意,(.)和文件名之间有个空格

source filename

你可能感兴趣的:(shell script学习笔记)