Linux》》Shell脚本 基本语法

执行脚本的三种方式

查找变量的过程

变量引用的顺序》》先从当前进程查询变量,如果当前进程没有此变量,默认去父进程查找这个变量。如果查找到则返回,否则一直查找到 祖宗(PID为1),还没有,则就没找到。
export修饰变量,则表明这个变量对子进程是可见的。或者说 用export 修饰的变量,可以转递给子进程。

在这里插入图片描述

运算符

#  $((算式)) 是新语法  或  $[ 算式 ]  就语法 不推荐
# $((算式))  中的算式 可以用数学中 >=、*等  变量可省略 $   用途场景 数学运算、数值比较   不支持浮点型  
# $[ 算式 ]   大于 -gt,小于  lt等        变量可省略 $   用途场景 文件属性  、字符串

在这里插入图片描述

test

test expression

或者使用方括号的简写形式:

[ expression ] 这种更常用
注意:使用方括号格式时,表达式与方括号之间必须有空格,即 [空格EXPRESSION空格]
[ ] 》》》1, 即false
[ xx ] 》》0 ,即true
当 test 判断的表达式为真时,返回状态码为 0;如果为假,则返回非 0 值。

在这里插入图片描述
功能
test 命令可以进行以下几种类型的测试:

数值比较:检查两个数值之间的关系。

字符串比较:检查字符串是否相等或为空。

文件测试:检查文件是否存在、是否可读、是否可写等。

常用选项
数值比较
-eq:等于

-ne:不等于

-gt:大于

-lt:小于

-ge:大于等于

-le:小于等于

# 数值比较
#!/bin/bash
 
num1=10
num2=20
 
if test $num1 -lt $num2; then
    echo "$num1 小于 $num2"
else
    echo "$num1 不小于 $num2"
fi

字符串比较
=:字符串相等

!=:字符串不相等

-z:字符串为空

-n:字符串非空

# 字符串比较
#!/bin/bash
 
str1="hello"
str2="world"
 
if [ "$str1" = "$str2" ]; then
    echo "字符串相同"
else
    echo "字符串不同"
fi

文件测试
-e:文件存在 existence

-f:文件是普通文件 file 文件存在且是一个普通的文件

-d:文件是目录 directory 文件存在且是一个目录

-r:文件可读 read

-w:文件可写 write

-x:文件可执行 execute

# 文件测试
#!/bin/bash
 
FILE="/etc/passwd"
 
if [ -e "$FILE" ]; then
    echo "文件 $FILE 存在"
else
    echo "文件 $FILE 不存在"
fi

&& 、|| 跟高级语言 and ,or 一样, 还称短路 运算符

条件1 && 条件2   
  》》 如果条件1为  真 true,则会继续判断 条件2   
  》》 如果条件1为  假  false ,则不会执行 条件2
条件1  ||  条件2
  》》 如果条件1为  真 true,则不会执行 条件2   
  》》 如果条件1为  假  false ,则会继续判断  条件2

在这里插入图片描述
》》多重判断条件
在这里插入图片描述

流程控制

if 判断
#############   单分支 ############  
if [ condition ];then
   command
fi
# 或者
if [ condition ] 
then
    command
fi
############   多分支 ############  
if [ condition ]; then
   command
elif [ condition ] 
then
   command
else 
   command
fi
case

相当于 C# 中 switch case
;; 相当于 break
*) 相当于 default

casein
模式1)
    command1
    command2
    ...
    commandN
    ;;
模式2)
    command1
    command2
    ...
    commandN
    ;;
esac

#!/bin/bash
while true
do
echo "请录入成绩的等级"
read num
case $num in
        A) echo "优秀"
                ;;
        B) echo "良好"
                ;;
        C) echo "及格"
                ;;
        *) echo '不及格'
        ;;
esac
done
~          

在这里插入图片描述

for
# 语法1
for (( 初始值; 循环控制条件; 变量变换  ))
do
  command
done
# 例子
for((i=0;i<5;i++))
#  语法2
for var in item1 item2 ... itemN
do
    command1
    command2
    ...
    commandN
done
# 例子
for i in {0..4}
for i in `seq 0 4`
#  也可以写成一行
for var in item1 item2 ... itemN; do command1; command2… done;


#!/bin/bash
for (( i=1;i<=100;i++))
do
        sum=$((sum + i))  # 或  sum=$[ $sum + $i]
done
echo $sum  


while
# 基本语法
while [ 条件判断式 ]
do
  command
done

# 案例
#!/bin/bash
i=0
while [ $i -lt 101 ]
do
        ((sum2=sum2+i))
        ((i++))
        #或者
        # let sum2+=i
        # let i++
        # 或者换成 这种是旧语法  不推荐 
        # sum2=$[ $sum2 + $i ]
        # i=$[$i + 1]
done
echo $sum2

》》# 旧语法(不推荐)
result=$[4 * (5 + 1)]

》》# 新语法(推荐)
result=$((4 * (5 + 1)))
在这里插入图片描述

read 读取控制台输入

# 基本语法
read  (选项) (参数)
选项:
   -p   指定读取值时的提示符
   -t   指定读取值时等待的时间(单位秒),如果不加 -t,表示一直等下去
参数:
   变量:  指定读取值的变量名 (读取的赋给那个变量) 这个不能省略

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值