shell学习

shell学习

Shell是一个命令行解释器,它为用户提供了一个向[Linux]内核发送请求以便运行程序的界面系统程序,用户可以用Shell来启动,挂起,停止甚至编写一些程序。

脚本执行方式

#!/bin/bash
echo "hello_world''

1.0 基本语法

  1. 定义变量 变量名=值

  2. 撤销变量 uset 变量名

  3. 声明静态变量: readOnly变量,注意,静态变量不能unset。

  4. 可将变量提升为全局环境变量,可供其他Shell程序使用

    [注:

    1. 变量名可以由字母,数字,下划线组成,不能以数字开头

    2. 等号两侧不能有空格

    3. 变量名习惯大写

    4. 可以将命令的返回值赋给变量,但是需要用 反引号`将命令括起来。 如 A=date` [这里运行里面的命令,并把结果返回给变量A] 也可写成 A=$(date )]

1.1 设置环境变量

export 变量名=变量值 (将Shell变量输出为环境变量 ) source 配置文件 (让修改后的配置信息立即生效 ,如 source /etc/profile) echo $变量名 (查询环境变量的值)

1.2 注释

  1. 单行注释 : #

  2. 多行注释 :

      :>>!       [ 注: 至少占三行]   
      这是注释内容
      *********
      *********
    !

1.3 位置参数变量

  1. $ n ( n代表数字, $0 代表命令本身,$1代表第一个参数, $2代表第二个参数,十以及以上的参数需要用到大括号包含,如 ${10} )

  2. $*(这个变量代表命令行中的所有参数, $ *把所有参数看成一个整体 。且去掉命令本身 。要区别于$@ ,)

  3. $@(代表命令行中所有参数,不过$@把每个参数分区对待,且去掉命令本身)

  4. $#(代表命令行所有的参数个数)

  5. $$(代表脚本当前运行的进程PID)

1.4 预定义变量

介绍:Shell设计者实现已经定义好的变量,可以直接在Shell脚本中使用 基本语法:

  1. $$(当前进程号PID)

  2. $!(后台运行的最后一个进程的进程号)

  3. $?(最后一侧执行命令返回的状态,如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值非0(具体是那个数,由命令自己来决定),证明上一个命令执行不正确)

1.5运算符

基本语法:

  1. $((运算式)) 或者$[运算式]或者 exper m + n [即expersion表达式]

  2. 注意 expersion表达式运算符之间要有空格,如果希望 expr结果赋予某个变量,使用反引号``

  3. expr 中需要的特殊符号 expr * ,/,%

用例:

#!/bin/bash
a=10
b=20
sum=`expr $a + $b`
echo $sum

sum=$((2*3+6))
echo $sum

sum=$[2*3+6]
echo $sum

1.6条件判断

判断语句

  1. 比较字符串 =

  2. 按文件权限来判断 -r 有读权限 -w有写权限, -x 有执行权限

  3. 按文件类型判断 -f 文件存在且是一个常规文件 -e文件存在 -d 文件存在一个目录

  4. 整数比较

    1. -lt 小于

    2. -le 小于等于于

    3. -gt 大于

    4. -ge 大于等于

    5. -qe 等于

    6. -ne 不等于

       

二、流程控制

2.0 if语句

 
if [ 条件判断式 ]
  then
        语句
else
        语句
fi
或者,采用下列方式 >>>>>>>>>
if [ 条件判断式 ]
then
代码
elif[ 条件判断式 ]
then
代码
fi
[>>>> 注:中括号与条件判断式之间必须有空格 ]


102 a=10
103 b=20
104
105 if [ $a != $b ]
106 then
107         echo a != b
108 else
109         echo a == b
110 fi
111
112 if [[ $a -gt 100 && $b -gt 100 && $a != $b ]]   #逻辑运算符要带两个方括号
113 then
114         echo a 和 b gt100
115 else
116         echo a 和b lt 100
117 fi

2.1 case语句

case $变量名 in
"值1")
如果符合条件,就执行这里的代码
;;
"值2")
如果符合条件,就执行这里的代码
;;
*)    #类似于C语言的default
如果变量的值都不是以上的值,则执行这里的代码
;;
esac


#例子:命令行执行脚本时,输入一个数字,然后程序输出对应的一个字符串
152 case $1 in
153
154 "1")
155         echo 111
156 ;;
157 "2")
158         echo 222
159 ;;
160 "3")
161         echo 333
162 ;;
163 *)
164         echo other
165 ;;
166 esac

2.2循环控制语句

for 循环

for 变量 in 值1,值2,值3
do
代码
done
########################################
或者
for (( 初始值;循环控制条件;变量变化))
do
代码
done


##############################################
sum=0
for(( i=1; i<=100; i++))
do
 sum=$[$sum+$i]
done
echo $sum
##############################################
sum=0
sum1=1
sum2=2
for i in {1..10}
do
         sum=`expr $i + $sum`
         sum1=$[$sum1+$i]
         sum2=$(($sum2+$i))
done
echo $sum
echo $sum1
echo $sum2

################################
while 循环
while [ 条件判断式 ]
do
程序
done
#################################
#!/bin/bash
sum=0
i=0
while [ $i -le $1 ]
do
 sum=$[$sum + $i]
 i=$[$i+1]
done
echo $sum

 

posted @ 2021-11-26 16:38  _promise  阅读(46)  评论(0编辑  收藏  举报