shell编程思维导图
2023-11-20 11:48:08   1  举报             
     
         
 AI智能生成
  高效学习shell脚本的编写 shell脚本开发手册
    作者其他创作
 大纲/内容
  简介    
     Shell 脚本(shell script),是一种为 shell 编写的脚本程序。  
     第一个shell脚本    
     #!/bin/bash
echo "Hello World !"
    echo "Hello World !"
 #!    
     约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell。  
     echo 命令用于向窗口输出文本。  
     Shell 变量    
     定义变量    
     your_name="runoob.com"  
     变量名不加美元符号  
     使用变量    
     echo $your_name  
     echo ${your_name}  
     变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界  
     只读变量    
     使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。  
     #!/bin/bash
readonly name="zhangsan"
    readonly name="zhangsan"
 删除变量    
     使用 unset 命令可以删除变量。  
     unset variable_name  
     变量被删除后不能再次使用。unset 命令不能删除只读变量。  
     Shell 字符串    
     单引号    
     str='this is a string'  
     单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的  
     单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用  
     双引号    
     your_name='runoob'
str="Hello, I know you are \"$your_name\"! \n"
echo -e $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
    echo `expr index "$string" io` # 输出 4
 注意: 以上脚本中 ` 是反引号,而不是单引号 '  
     Shell 注释  
     Shell 注释    
     以 # 开头的行就是注释,会被解释器忽略。  
     多行注释    
     :<<EOF
注释内容...
注释内容...
注释内容...
EOF  
     EOF 也可以使用其他符号:    
     :<<'
注释内容...
注释内容...
注释内容...
'  
     :<<!
注释内容...
注释内容...
注释内容...
!  
     Shell 传递参数    
     可以在执行 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]=value0
array_name[1]=value1
array_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]  
     关系运算符    
     关系运算符只支持数字,不支持字符串,除非字符串的值是数字。  
     -eq    
     [ $a -eq $b ]   
     -ne    
     [ $a -ne $b ]   
     -gt    
     [ $a -gt $b ]   
     -lt    
     [ $a -lt $b ]   
     -ge    
     [ $a -ge $b ]   
     -le    
     [ $a -le $b ]  
     字符串运算符    
     =    
     检测两个字符串是否相等,相等返回 true。  
     	[ $a = $b ] 返回 false。  
     !=    
     检测两个字符串是否不相等,不相等返回 true。  
     [ $a != $b ] 返回 true。  
     -z    
     检测字符串长度是否为0,为0返回 true。  
     [ -z $a ] 返回 false。  
     -n    
     检测字符串长度是否不为 0,不为 0 返回 true。  
     [ -n "$a" ] 返回 true。  
     $    
     检测字符串是否为空,不为空返回 true。  
     	[ $a ] 返回 true。  
     假定变量 a 为 "abc",变量 b 为 "efg":  
     布尔运算符    
     !    
     非运算    
     [ ! false ] 返回 true。  
     -o    
     或运算    
     	[ $a -lt 20 -o $b -gt 100 ] 返回 true。  
     -a    
     与运算    
     [ $a -lt 20 -a $b -gt 100 ] 返回 false。  
     假定变量 a 为 10,变量 b 为 20  
     逻辑运算符    
     &&    
     [[ $a -lt 100 && $b -gt 100 ]] 返回 false  
     ||    
     [[ $a -lt 100 || $b -gt 100 ]] 返回 true  
     文件测试运算符  
     原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。    
     val=`expr 2 + 2`  
     Shell 流程控制    
     if else    
     if condition1
then
command1
elif condition2
then
command2
else
commandN
fi
  
    then
command1
elif condition2
then
command2
else
commandN
fi
 for 循环    
     for str in This is a string
do
    echo $str
done  
     while 语句    
     #!/bin/bash
int=1
while(( $int<=5 ))
do
echo $int
let "int++"
done
    int=1
while(( $int<=5 ))
do
echo $int
let "int++"
done
 until 循环    
     until 循环执行一系列命令直至条件为 true 时停止。  
     until condition
do
    command
done  
     case ... esac    
     case 值 in
模式1)
    command1
    command2
    ...
    commandN
    ;;
模式2)
    command1
    command2
    ...
    commandN
    ;;
esac  
     Shell 函数    
     [ function ] funname [()]
{
action;
[return int;]
}
    {
action;
[return int;]
}
 可以带function fun() 定义,也可以直接fun() 定义,不带任何参数。  
     参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。 return后跟数值n(0-255  
     函数参数    
     通过 $n 的形式来获取参数的值  
     函数返回值在调用该函数后通过 $? 来获得。  
     
    收藏 
     
 
 
 
 
  0 条评论
 下一页
 为你推荐
 查看更多
    
   
  
  
  
  
  
  
  
  
  
  
 