shell编程思维导图
2023-11-20 11:48:08 1 举报
AI智能生成
登录查看完整内容
为你推荐
查看更多
高效学习shell脚本的编写 shell脚本开发手册
作者其他创作
大纲/内容
Shell 脚本(shell script),是一种为 shell 编写的脚本程序。
简介
#!/bin/bashecho \"Hello World !\"
约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell。
#!
echo 命令用于向窗口输出文本。
第一个shell脚本
your_name=\"runoob.com\"
变量名不加美元符号
定义变量
echo $your_name
echo ${your_name}
变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界
使用变量
使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。
#!/bin/bashreadonly name=\"zhangsan\"
只读变量
使用 unset 命令可以删除变量。
unset variable_name
变量被删除后不能再次使用。unset 命令不能删除只读变量。
删除变量
str='this is a string'
单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的
单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用
单引号
your_name='runoob'str=\
双引号里可以有变量
双引号里可以出现转义字符
双引号
string=\"abcd\"echo ${#string} #输出 4
获取字符串长度
string=\"runoob is a great site\"echo ${string:1:4} # 输出 unoo
提取子字符串
查找字符 i 或 o 的位置(哪个字母先出现就计算哪个):
string=\"runoob is a great site\"echo `expr index \"$string\" io` # 输出 4
注意: 以上脚本中 ` 是反引号,而不是单引号 '
查找子字符串
Shell 字符串
Shell 注释
Shell 变量
以 # 开头的行就是注释,会被解释器忽略。
:<<EOF注释内容...注释内容...注释内容...EOF
:<<'注释内容...注释内容...注释内容...'
:<<!注释内容...注释内容...注释内容...!
EOF 也可以使用其他符号:
多行注释
可以在执行 Shell 脚本时,向脚本传递参数
$n。n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推……
$0 为执行的文件名(包含文件路径)
传递到脚本的参数个数
$#
以一个单字符串显示所有向脚本传递的参数。
如\"$*\"用「\"」括起来的情况、以\"$1 $2 … $n\"的形式输出所有参数。
$*
脚本运行的当前进程ID号
后台运行的最后一个进程的ID号
$!
$$
与$*相同,但是使用时加引号,并在引号中返回每个参数。
如\"$@\"用「\"」括起来的情况、以\"$1\" \"$2\" … \"$n\" 的形式输出所有参数。
$@
显示Shell使用的当前选项
$-
显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。
$?
特殊字符用来处理参数
Shell 传递参数
在 Shell 中,用括号来表示数组,数组元素用\"空格\"符号分割开
数组名=(值1 值2 ... 值n)
array_name=(value0 value1 value2 value3)
array_name[0]=value0array_name[1]=value1array_name[n]=valuen
可以不使用连续的下标,而且下标的范围没有限制。
定义数组
${数组名[下标]}
valuen=${array_name[n]}
echo ${array_name[@]}
使用 @ 或 * 符号可以获取数组中的所有元素
读取数组
length=${#array_name[@]}
length=${#array_name[*]}
取得数组元素的个数
lengthn=${#array_name[n]}
取得数组单个元素的长度
获取数组的长度
Shell 数组
`expr $a + $b`
$[a+b]
+
算数运算符
关系运算符只支持数字,不支持字符串,除非字符串的值是数字。
[ $a -eq $b ]
-eq
[ $a -ne $b ]
-ne
[ $a -gt $b ]
-gt
[ $a -lt $b ]
-lt
[ $a -ge $b ]
-ge
[ $a -le $b ]
-le
关系运算符
检测两个字符串是否相等,相等返回 true。
\t[ $a = $b ] 返回 false。
=
检测两个字符串是否不相等,不相等返回 true。
[ $a != $b ] 返回 true。
!=
检测字符串长度是否为0,为0返回 true。
[ -z $a ] 返回 false。
-z
检测字符串长度是否不为 0,不为 0 返回 true。
[ -n \"$a\" ] 返回 true。
-n
检测字符串是否为空,不为空返回 true。
\t[ $a ] 返回 true。
$
假定变量 a 为 \"abc\",变量 b 为 \"efg\":
字符串运算符
[ ! false ] 返回 true。
非运算
!
\t[ $a -lt 20 -o $b -gt 100 ] 返回 true。
或运算
-o
[ $a -lt 20 -a $b -gt 100 ] 返回 false。
与运算
-a
假定变量 a 为 10,变量 b 为 20
布尔运算符
[[ $a -lt 100 && $b -gt 100 ]] 返回 false
&&
[[ $a -lt 100 || $b -gt 100 ]] 返回 true
||
逻辑运算符
文件测试运算符
val=`expr 2 + 2`
原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。
Shell 基本运算符
if condition1then command1elif condition2 then command2else commandNfi
if else
for str in This is a stringdo echo $strdone
for 循环
#!/bin/bashint=1while(( $int<=5 ))do echo $int let \"int++\"done
while 语句
until 循环执行一系列命令直至条件为 true 时停止。
until conditiondo commanddone
until 循环
case 值 in模式1) command1 command2 ... commandN ;;模式2) command1 command2 ... commandN ;;esac
case ... esac
Shell 流程控制
参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。 return后跟数值n(0-255
[ function ] funname [()]{ action;[return int;]}
通过 $n 的形式来获取参数的值
函数参数
函数返回值在调用该函数后通过 $? 来获得。
Shell 函数
shell编程
收藏
0 条评论
回复 删除
下一页