基于Linux系统的shell脚本

目录

一、什么是shell

二、 shell脚本基本语法

2.1创建文件、运行代码

2.2 shell脚本执行linux命令

三、变量

3.1本地变量

3.1.1获取变量的值

 3.1.2从键盘获取变量的值

3.2环境变量

3.3参数变量

 四、四则运算

五、条件判断 if语句

5.1句式结构

5.2 if常见的判断逻辑

示例1:  字符串比较

示例二:算术比较

示例三:找出大于0小于10的数

示例四:输出成绩等级

六、循环语句

6.1 for循环

6.1.2句式结构

6.2 while循环

6.2.1句式结构

6.3 until循环

6.3.1句式结构


注:本文章基于unbuntu虚拟机实现,不同虚拟机可能略有差异

一、什么是shell

shell 是一种脚本语言    也是应用程序

脚本:本质是一个文件,文件里面存放的是 特定格式的指令,系统可以使用脚本解析器 翻译或解析 指令 并执行(它不需要编译)

常见的命令解释器:shell    bash   sh   tcsh

**** 此处区分 解释型代码    命令型代码

解释型:运行代码需要解释器,运行效率低,开发效率高    如:  .sh结尾的shell脚本     .py结尾的                 python脚本

命令型:需要编译链接,直接计算机运行,运行效率高,开发效率低     如:  .c     .cpp
 

二、 shell脚本基本语法

2.1创建文件、运行代码

1、以  #! + 解释器  开头   

Linux系统中,指令which  bash可以查看当前使用的命令解释器位置

本机当前使用解释器为:/usr/bin/bash

2、echo(默认换行) / printf  打印到屏幕

3、脚本文件无需编译,直接运行

4、单行注释 #

2.2 shell脚本执行linux命令

如:执行ls命令

法一:   $(ls)

法二:  `ls`  

避免s=ls 造成的命令和赋值冲突

#!/usr/bin/bash

a=$(ls)
b=`ls`
echo "a=$a"
echo "b=$b"

三、变量

(1)、变量分为:本地变量、环境变量、参数变量

(2)、变量无类型

如:a =100; C语言中认为a是一个整型,但是脚本中a可以是任意类型

(3)、任意变量可赋值(注意变量 与 值 之间无空格

3.1本地变量

定义:自己写的变量

3.1.1获取变量的值

$ +变量名    获取变量的值

unset  清除变量名

"    "   打印出变量的值

‘    ’    按照原样输出

变量与值之间无空格(与C语言,C++区分)

示例:

#!/usr/bin/bash

a=100
str=hello
echo "a=$a"
echo "str=$str"
echo 'str=$str'
echo 'a=100'
#C语言中赋值时必须保证等号左右两边变量的类型相同
#shell中变量无类型之分,故此处可以赋值
a=$str
echo "a=$a"

输出结果为:

 3.1.2从键盘获取变量的值

#!/usr/bin/bash
echo "input"
read line
echo "line=$line"

运行后键盘输入,read读取输入变量值,  echo打印出值

3.2环境变量

 $PATH   以冒号分隔,打印出命令的目录列表

$0           shell脚本的名字

$#            传递给脚本的参数个数

$$           shell脚本的进程号,用它生成一个唯一的临时文件

示例:

#!/usr/bin/bash
echo "$PATH"
echo "$$"
echo "$0"

3.3参数变量

 $1  $2  $3........脚本程序的参数

\ 为转义字符  表示$失去获取变量值的功能

#!/usr/bin/bash
echo "$PATH"
echo "\$0=$0"
echo "\$$=$$"
echo "\$#=$#"
echo "\$1=$1"
echo "\$2=$2"

 

 四、四则运算

#!/usr/bin/bash

a=12
#let "a+1"   #直接+1
echo "a=$a"
  
a=`expr $a + 1` #使用命令+1
echo "a=$a"

expr 指令可以切换 加(+)减(-)乘(*)除(/)进行计算

五、条件判断 if语句

5.1句式结构

# if条件判断语句,通常以if开头,fi结尾。也可加入else或者elif进行多条件的判断

(1)、单分支语句 ---比较大小


    if [条件表达式]

   then
        语句1
    fi

(2)、 双分支if 语句
    if [表达式]
        语句1
    else
        语句2
    fi

(3)、 多支条件语句 ---判断成绩
    if [表达式]

    then
          语句1
    elif [表达式]
      then

        语句2
    elif
        语句2
    fi  


 

5.2 if常见的判断逻辑

(1)、字符串比较(左右两边可以为数字、字母、下划线)

=           相等

!=        不相等

-n        字符串不为空结果为真

-z         字符串为空结果为真

(2)、算术比较(左右两边必须是数字)

a    -eq      b           表达式相等为真

a    -ne      b            不相等为真

       -gt                    a>b结果为真

       -ge                   a≥b结果为真

        -lt                     a<b结果为真

        -le                     a≤b结果为真

(3)、文件条件测试

-r  文件可读为真

-d  目录文件为真

-f文件存在为真

示例1:  字符串比较

#!/usr/bin/bash
echo "input"
read str

if [ $str = 123 ]
then
    echo "=="
else
    echo "!="
fi

示例二:算术比较

#!/usr/bin/bash
echo "input"
read str

if [ $str -eq 123 ]
then
    echo "=="
else
    echo "!="
fi

示例三:找出大于0小于10的数

#!/usr/bin/bash
echo "input"
read str
if [ $str -gt 0 ] && [ $str -lt 10 ]
then
    echo "0<$str<10"
fi

示例四:输出成绩等级

#!/usr/bin/bash
echo "input"
read score

if [ $score -lt 0 ] ||  [ $score -gt 100 ]
then
    echo "成绩不合格"


    exit 0
fi


if [ $score -gt 80 ]
then
    echo "A"
elif [ $score -gt 70 ]
then
    echo "B"
elif [ $score -gt 60 ]
then
    echo "C"
else
    echo "D"
fi

六、循环语句

6.1 for循环

6.1.2句式结构

for  变量  in  数值

do

       输出语句

done

示例:

#!/usr/bin/bash
for i in abc hello 123
do
    echo "i=$i"
done

输出: i=abc

           i=hello

           i=123 

6.2 while循环

6.2.1句式结构

while  [  ]

do

     语句

done

示例:

打印出 1-9

#!/usr/bin/bash
i=1
while [ $i -lt 10 ]
do
    echo "i=$i"
    let "i+=1"
done

#!/usr/bin/bash
i=1
while [ : ]  #  :表示条件为真
do
    echo "i=$i"
    i=`expr $i + 1`
    if [ $i -eq 10 ]
    then 
        break
    fi
done

6.3 until循环

6.3.1句式结构

until [   ]

do 

    语句

done

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值