LINUX+SHELL脚本语言基础知识
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4.常用 shell 内嵌命令
(1)echo:显示变量内容
(2)env:显示目前系统中主要的预设变量内容 (3)set:显示目前系统中全部的变量内容 (4)read:从键盘读入变量内容 (5)declare:声明变量内容
-a:定义为数组 array -f:定义为函数 function
-i:定义为整数 integer -r:定义为“只读” -x:定义为透过环境输出变量、 例子: #!/bin/bash a=1+1 declare -i b=1+1 echo $a echo $b 执行后输出结果为 1+1
(2)if...else...fi 语句结构
if [条件 1];then 执行程序 1 else 执行程序 2 fi 例子: #!/bin/bash declare -i a echo "input 1 or 2" read a if [[ $a -eq 1 ]];then echo "1" else echo "2" fi
#!/bin/bash #hello world example echo "hello world" 这样,一个最简单的 shell 程序就编写完了。 第一行:#!说明 hello.sh 这个文件的类型的,这有点类似于 Windows 系统下 的用不同的文件后缀来表示不同的文件类型,但又不完全相同。Linux 系统根 据#!及该字符串后面的信息确定该文件的类型。在#!之后是一个路径名,这 个路径名指定了一个解释脚本中命令的程序。 第二行:“#hello world example”就是 shell 程序的注释,(但后面紧接着“!”号 的除外) 第三行:echo(回显)语句的功能是把 echo 后面的字符串输出到标准输出中。 现在,建立和写好之后,那么该程序如何运行呢? 由于该脚本没有执行的权限,只需要修改其执行的权限即可,执行:chmod a+x hello.sh。然后输入命令:./hello.sh 即可看到效果。
$$ :脚本运行的当前进程 ID 号 $? :显示最后命令的退出状态,0 表示没有错误,其它值表示有错误 例子 a.sh #!/bin/bash echo "the file is $0" echo "the parameter is $1 $2" echo "number of parameter is $#" echo "all parameter is $*" echo $? 加权限后执行./a.sh hh mm gg 则打印 the file is ./a.sh the parameter is hh mm number of parameter is 3 all parameter is hh mm gg 0
(1)if...fi 语句结构
if [条件 1];then 执行程序 fi 例子: #!/bin/bash declare -i a=10 declare -i b=20 if [ $a == $b ];then
echo "a is equal to b" fi
if [ $a != $b ];then echo "a is not equal to b" fi 输出结果为: a is not equal to b
(4)case...esac 语句结构
case $变量名称 in “第一个变量内容”)
程序 1
;;
“第二个变量内容”)
ห้องสมุดไป่ตู้程序 2
;;
*)
其它程序 exit 1 esac 例子: #!/bin/bash echo "you like" echo "1 is apple" echo "2 is orange" echo "input your choice" read a case $a in 1) echo "you like apple" ;; 2) echo "you like orange" ;; *) echo "you like nothing" exit 1 esac 执行后结果为: you like 1 is apple
二.shell 使用
1.建立和运行 shell 程序
shell 脚本程序:按照一定的语法结构把若干 linux 命令组织在一起,是 这些命令按照我们的要求完成一定的功能。它可以进行类似程序的编写,并且 不需要编译就能执行。(只需修改其权限) 像编写高级语言的程序一样,编写 shell 程序需要一个文本编辑器,如 VI 和 VIM,通常使用 VIM 文本编辑器,支持更便利的插入模式。 首先使用 VIM 编辑器编辑一个 hello.sh 文件:
echo 1+2 Shell 并没有输出结果 3,而是输出了 1+2。在 shell 中有三种方法可以更改运算 顺序。
a、 用 expr 改变运算顺序。可以用 echo `expr 1 + 2`来输出 1+2 的结果,用 expr 表 示后面的表达式为一个数学运算。需要注意的是,`并不是一个单引 号,而是“Tab”键上面的那个符号。
(2)取消变量:用 unset 变量名
#!/bin/bash #hello world 例子 a="hello world" unset a echo $a 以上例子将不会打印出任何东西。
3.shell 特殊变量
$0 :执行的脚本的文件名 $1 :脚本文件的第一个参数名 $# :传递到脚本的参数个数 $* :以一个单字符串显示所有向脚本传递的参数
(2)关系运算符
-eq:数值相等
-ne:数值不相等
-lt:数 1 小于数 2
-gt:数 1 大于数 2
输入 test 1 -lt 2 && echo "yes"则打印 yes
-ge:数 1 大于等于数 2 -le:数 1 小于等于数 2
(3)布尔运算
-a:(and)两状况同时成立!test -r file -a -x file,则 file 同时具有 r 和 x 权限 时,才为 true。 -o:(or)两状况任何一个成立!test -r file -o -x file,则 file 具有 r 或 x 权限 时,就为 true。 !:相反状态,test ! -r file,当 file 不具有 r 权限时,就为 true。
打印为 input 1 or 2 1 1
(3)if...elif...else...fi 语句结构
if [条件 1];then 执行程序 1 elif[条件 2];then 执行程序 2 else 执行程序 3 fi 例子: #!/bin/bash declare -i a=10 declare -i b=20 if [ $a == $b ];then echo "a is equal to b" elif [ $a -gt $b ];then echo "a is greater than b" else echo "a is less than b" fi 输出结果为: a is less than b
linux shell 脚本语言基础知识
一.shell 简介
Linux 系统的 shell 作为操作系统的外壳,为用户提供使用操作系统的 界面,更确切的说,shell 是用户与 Linux 操作系统沟通的桥梁。用户既可以输 入命令执行,又可以利用 Shell 脚本编程,完成更加复杂的操作。
shell 是一个命令解释器,它从输入设备读取命令,再将其转为计算机 可以了解的指令,然后执行它。在 linux 中,shell 又不仅是简单的命令解释 器,而且是一个全功能的编程环境。 Linux 的 Shell 种类众多,常见的有:Bourne Shell(/usr/bin/sh 或/bin/sh)、 Bourne Again Shell(/bin/bash)、C Shell(/usr/bin/csh)、K Shell (/usr/bin/ksh)、Shell for Root(/sbin/sh),等等。不同的 Shell 语言的语法有 所不同,所以不能交换使用。每种 Shell 都有其特色之处,基本上,掌握其中 任何一种就足够了。通常用 Bash,也就是 Bourne Again Shell 进行编程。
输出结果为: the sum is 5050
语法二: for var in con1 con2 con3 ...//var 是一个变量 do 程序 done 第一次循环时,$var 的内容为 con1 第二次循环时,$var 的内容为 con2 第三次循环时,$var 的内容为 con3 例子: #!/bin/bash declare -a A A=(1 2 3 4 5 6 7 8 9 10) declare -i c for i in 1 3 5 7 9 do c=c+A[$i]; done echo "the count is $c" 输出结果为: the count is 30
(4)字符串运算符
=:两个字符串相等
!=:两个字符串不相等
-z:空串
-n:非空串
输入 test "a" = "a" && echo "yes"则打印 yes
(5)测试文件状态的条件表达式:
-e:是否存在 -L:符号连接 -w:可写
-d:是目录 -s 文件非空
-x:可执行
-f:是文件 -r:可读
2.shell 条件语句
b、用 let 指示数学运算。可以先将运算的结果赋值给变量 b,运算命令是 b=let 1 + 2。然后用 echo $b 来输出 b 的值。如果没有 let,则会输出 1+2。
c、用$[]表示数学运算。将一个数学运算写到$[]符号的中括号中,中括号中的 内容将先进行数学运算(中括号中可以包含空格)。例如命令 echo $[1+2],将输 出结果 3。
2 is orange input your choice 1 you like apple
3.shell 循环类型
(1)for 循环
循环操作项目清单。重复一组命令列表中的每个项目。 语法一: for (( 初始值; 限制值; 执行步阶 )) do 程序 done 初始值:变量在循环中的起始值 限制值:当变量值在这个限制范围内时,就继续进行循环 执行步阶:每作一次循环时,变量的变化量 例子: #!/bin/bash declare -i s s=0 for (( i=1; i<=100; i++ )) do s=s+i done echo "the sum is $s"
2
5.条件测试
在写 shell 脚本时,经常遇到的问题就是判断字符串是否相等,可能还要检查文 件状态或进行数字测试,只有这些测试完成才能做下一步动作。 test 命令就是用于测试字符串,文件状态和数字的.test 命令两种格式: test condition 或 [ condition ] 使用方括号时,要注意在条件两边加上空格
2.shell 变量
变量是一个存储值的实体,可以是一个名字,或者一个特殊的值。shell 可以创 建,分配和删除变量。
(1)变量设置规则:
a.变量与变量内容以等号(=)来连接 b.等号两边不能直接接空格符 c.变量名称只能是英文字母与数字或下划线,但是数字不能是开头符 d.引用变量名用“$变量名”
#!/bin/bash
#hello world example a="hello world" echo $a 以上例子一样可以输出 hello world。 e.若有空格符可以使用双引号或单引号将变量内容结合起来,但必须注意,双 引号的特殊字符可以保有变量的特性,但是单引号内的特殊字符则仅为一般字 符。 #name="$LOGNAME is hh" //root is hh #name='$LOGNAME is hh' //$LOGNAME is hh f.通常大写字符为系统预设变量,自行设定的变量可以使用小写字符
三.shell 脚本编程基础知识
1.shell 基本运算符
(1)算术运算符
+:对两个变量做加法。 -:对两个变量做减法。 \*:对两个变量做乘法。 /:对两个变量做除法。 **:对两个变量做幂运算。 %:取模运算,第一个变量除以第二个变量求余数。 +=:加等于,在自身基础上加第二个变量。 -=:减等于,在第一个变量的基础上减去第二个变量。 *=:乘等于,在第一个变量的基础上乘以第二个变量。 /=:除等于,在第一个变量的基础上除以第二个变量。 %=:取模赋值,第一个变量对第二个变量取模运算,再赋值给第一个变量 在使用这些运算符时,需要注意到运算顺序的问题。例如输入下面的命令,输 出 1+2 的结果。
(1)echo:显示变量内容
(2)env:显示目前系统中主要的预设变量内容 (3)set:显示目前系统中全部的变量内容 (4)read:从键盘读入变量内容 (5)declare:声明变量内容
-a:定义为数组 array -f:定义为函数 function
-i:定义为整数 integer -r:定义为“只读” -x:定义为透过环境输出变量、 例子: #!/bin/bash a=1+1 declare -i b=1+1 echo $a echo $b 执行后输出结果为 1+1
(2)if...else...fi 语句结构
if [条件 1];then 执行程序 1 else 执行程序 2 fi 例子: #!/bin/bash declare -i a echo "input 1 or 2" read a if [[ $a -eq 1 ]];then echo "1" else echo "2" fi
#!/bin/bash #hello world example echo "hello world" 这样,一个最简单的 shell 程序就编写完了。 第一行:#!说明 hello.sh 这个文件的类型的,这有点类似于 Windows 系统下 的用不同的文件后缀来表示不同的文件类型,但又不完全相同。Linux 系统根 据#!及该字符串后面的信息确定该文件的类型。在#!之后是一个路径名,这 个路径名指定了一个解释脚本中命令的程序。 第二行:“#hello world example”就是 shell 程序的注释,(但后面紧接着“!”号 的除外) 第三行:echo(回显)语句的功能是把 echo 后面的字符串输出到标准输出中。 现在,建立和写好之后,那么该程序如何运行呢? 由于该脚本没有执行的权限,只需要修改其执行的权限即可,执行:chmod a+x hello.sh。然后输入命令:./hello.sh 即可看到效果。
$$ :脚本运行的当前进程 ID 号 $? :显示最后命令的退出状态,0 表示没有错误,其它值表示有错误 例子 a.sh #!/bin/bash echo "the file is $0" echo "the parameter is $1 $2" echo "number of parameter is $#" echo "all parameter is $*" echo $? 加权限后执行./a.sh hh mm gg 则打印 the file is ./a.sh the parameter is hh mm number of parameter is 3 all parameter is hh mm gg 0
(1)if...fi 语句结构
if [条件 1];then 执行程序 fi 例子: #!/bin/bash declare -i a=10 declare -i b=20 if [ $a == $b ];then
echo "a is equal to b" fi
if [ $a != $b ];then echo "a is not equal to b" fi 输出结果为: a is not equal to b
(4)case...esac 语句结构
case $变量名称 in “第一个变量内容”)
程序 1
;;
“第二个变量内容”)
ห้องสมุดไป่ตู้程序 2
;;
*)
其它程序 exit 1 esac 例子: #!/bin/bash echo "you like" echo "1 is apple" echo "2 is orange" echo "input your choice" read a case $a in 1) echo "you like apple" ;; 2) echo "you like orange" ;; *) echo "you like nothing" exit 1 esac 执行后结果为: you like 1 is apple
二.shell 使用
1.建立和运行 shell 程序
shell 脚本程序:按照一定的语法结构把若干 linux 命令组织在一起,是 这些命令按照我们的要求完成一定的功能。它可以进行类似程序的编写,并且 不需要编译就能执行。(只需修改其权限) 像编写高级语言的程序一样,编写 shell 程序需要一个文本编辑器,如 VI 和 VIM,通常使用 VIM 文本编辑器,支持更便利的插入模式。 首先使用 VIM 编辑器编辑一个 hello.sh 文件:
echo 1+2 Shell 并没有输出结果 3,而是输出了 1+2。在 shell 中有三种方法可以更改运算 顺序。
a、 用 expr 改变运算顺序。可以用 echo `expr 1 + 2`来输出 1+2 的结果,用 expr 表 示后面的表达式为一个数学运算。需要注意的是,`并不是一个单引 号,而是“Tab”键上面的那个符号。
(2)取消变量:用 unset 变量名
#!/bin/bash #hello world 例子 a="hello world" unset a echo $a 以上例子将不会打印出任何东西。
3.shell 特殊变量
$0 :执行的脚本的文件名 $1 :脚本文件的第一个参数名 $# :传递到脚本的参数个数 $* :以一个单字符串显示所有向脚本传递的参数
(2)关系运算符
-eq:数值相等
-ne:数值不相等
-lt:数 1 小于数 2
-gt:数 1 大于数 2
输入 test 1 -lt 2 && echo "yes"则打印 yes
-ge:数 1 大于等于数 2 -le:数 1 小于等于数 2
(3)布尔运算
-a:(and)两状况同时成立!test -r file -a -x file,则 file 同时具有 r 和 x 权限 时,才为 true。 -o:(or)两状况任何一个成立!test -r file -o -x file,则 file 具有 r 或 x 权限 时,就为 true。 !:相反状态,test ! -r file,当 file 不具有 r 权限时,就为 true。
打印为 input 1 or 2 1 1
(3)if...elif...else...fi 语句结构
if [条件 1];then 执行程序 1 elif[条件 2];then 执行程序 2 else 执行程序 3 fi 例子: #!/bin/bash declare -i a=10 declare -i b=20 if [ $a == $b ];then echo "a is equal to b" elif [ $a -gt $b ];then echo "a is greater than b" else echo "a is less than b" fi 输出结果为: a is less than b
linux shell 脚本语言基础知识
一.shell 简介
Linux 系统的 shell 作为操作系统的外壳,为用户提供使用操作系统的 界面,更确切的说,shell 是用户与 Linux 操作系统沟通的桥梁。用户既可以输 入命令执行,又可以利用 Shell 脚本编程,完成更加复杂的操作。
shell 是一个命令解释器,它从输入设备读取命令,再将其转为计算机 可以了解的指令,然后执行它。在 linux 中,shell 又不仅是简单的命令解释 器,而且是一个全功能的编程环境。 Linux 的 Shell 种类众多,常见的有:Bourne Shell(/usr/bin/sh 或/bin/sh)、 Bourne Again Shell(/bin/bash)、C Shell(/usr/bin/csh)、K Shell (/usr/bin/ksh)、Shell for Root(/sbin/sh),等等。不同的 Shell 语言的语法有 所不同,所以不能交换使用。每种 Shell 都有其特色之处,基本上,掌握其中 任何一种就足够了。通常用 Bash,也就是 Bourne Again Shell 进行编程。
输出结果为: the sum is 5050
语法二: for var in con1 con2 con3 ...//var 是一个变量 do 程序 done 第一次循环时,$var 的内容为 con1 第二次循环时,$var 的内容为 con2 第三次循环时,$var 的内容为 con3 例子: #!/bin/bash declare -a A A=(1 2 3 4 5 6 7 8 9 10) declare -i c for i in 1 3 5 7 9 do c=c+A[$i]; done echo "the count is $c" 输出结果为: the count is 30
(4)字符串运算符
=:两个字符串相等
!=:两个字符串不相等
-z:空串
-n:非空串
输入 test "a" = "a" && echo "yes"则打印 yes
(5)测试文件状态的条件表达式:
-e:是否存在 -L:符号连接 -w:可写
-d:是目录 -s 文件非空
-x:可执行
-f:是文件 -r:可读
2.shell 条件语句
b、用 let 指示数学运算。可以先将运算的结果赋值给变量 b,运算命令是 b=let 1 + 2。然后用 echo $b 来输出 b 的值。如果没有 let,则会输出 1+2。
c、用$[]表示数学运算。将一个数学运算写到$[]符号的中括号中,中括号中的 内容将先进行数学运算(中括号中可以包含空格)。例如命令 echo $[1+2],将输 出结果 3。
2 is orange input your choice 1 you like apple
3.shell 循环类型
(1)for 循环
循环操作项目清单。重复一组命令列表中的每个项目。 语法一: for (( 初始值; 限制值; 执行步阶 )) do 程序 done 初始值:变量在循环中的起始值 限制值:当变量值在这个限制范围内时,就继续进行循环 执行步阶:每作一次循环时,变量的变化量 例子: #!/bin/bash declare -i s s=0 for (( i=1; i<=100; i++ )) do s=s+i done echo "the sum is $s"
2
5.条件测试
在写 shell 脚本时,经常遇到的问题就是判断字符串是否相等,可能还要检查文 件状态或进行数字测试,只有这些测试完成才能做下一步动作。 test 命令就是用于测试字符串,文件状态和数字的.test 命令两种格式: test condition 或 [ condition ] 使用方括号时,要注意在条件两边加上空格
2.shell 变量
变量是一个存储值的实体,可以是一个名字,或者一个特殊的值。shell 可以创 建,分配和删除变量。
(1)变量设置规则:
a.变量与变量内容以等号(=)来连接 b.等号两边不能直接接空格符 c.变量名称只能是英文字母与数字或下划线,但是数字不能是开头符 d.引用变量名用“$变量名”
#!/bin/bash
#hello world example a="hello world" echo $a 以上例子一样可以输出 hello world。 e.若有空格符可以使用双引号或单引号将变量内容结合起来,但必须注意,双 引号的特殊字符可以保有变量的特性,但是单引号内的特殊字符则仅为一般字 符。 #name="$LOGNAME is hh" //root is hh #name='$LOGNAME is hh' //$LOGNAME is hh f.通常大写字符为系统预设变量,自行设定的变量可以使用小写字符
三.shell 脚本编程基础知识
1.shell 基本运算符
(1)算术运算符
+:对两个变量做加法。 -:对两个变量做减法。 \*:对两个变量做乘法。 /:对两个变量做除法。 **:对两个变量做幂运算。 %:取模运算,第一个变量除以第二个变量求余数。 +=:加等于,在自身基础上加第二个变量。 -=:减等于,在第一个变量的基础上减去第二个变量。 *=:乘等于,在第一个变量的基础上乘以第二个变量。 /=:除等于,在第一个变量的基础上除以第二个变量。 %=:取模赋值,第一个变量对第二个变量取模运算,再赋值给第一个变量 在使用这些运算符时,需要注意到运算顺序的问题。例如输入下面的命令,输 出 1+2 的结果。