shell编程笔记

本文详细介绍了Shell编程的基础知识,包括Shell脚本的执行方式、变量的使用(系统变量与自定义变量)、位置参数变量的获取、算术运算符和条件判断的语法,以及流程控制结构(如if、case、for、while循环)。此外,还讲解了如何使用read命令读取用户输入,以及如何定义和调用自定义函数。这些内容构成了Shell编程的核心基础,对于编写自动化脚本和系统管理非常实用。
摘要由CSDN通过智能技术生成

1. 简介

Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。

2. shell脚本执行方式

  1. 格式
    脚本以 #!/bin/bash 开头
    脚本需要有可执行权限
  2. 执行方式
    方式1:赋予脚本x权限,再执行 ./hello.sh
    方式2:不用给x权限,直接 sh hello.sh

3. Shell的变量

  1. 系统变量
    $HOME、$PWD等
    显示当前shell中所有变量:set

  2. 自定义变量
    定义变量:变量名=值
    撤销变量:unset 变量
    声明静态变量:readonly 变量,注:静态变量无法撤销

    #!/bin/bash
    # 案例1:定义变量A
    A=100
    # 输出变量需要加上$
    echo A=$A
    echo "A=$A"
    # 案例2:撤销变量A
    unset A
    echo A=$A
    # 案例3:声明静态变量B=2,不能unset
    readonly B=200
    echo B=$B
    # unset B
    echo "B=$B"
    C=$(date)
    echo C=$C
    

    结果:在这里插入图片描述

4. 位置参数变量

  1. 介绍
    执行一个脚本时,如希望获取到命令行的参数信息,就可以使用位置参数变量。
    ./myshell.sh 100 200,这就是一个执行shell的命令行,可在myshell脚本中获取到参数。

  2. 基本语法
    $n

    #!/bin/bash
    echo "0=$0 1=$1 2=$2"
    echo "所有的参数=$*"
    echo "$@"
    echo "参数的个数=$#"
    

    结果:
    在这里插入图片描述

5. 运算符

格式如下

#!/bin/bash
# 案例1:计算(2+3)*4
RES1=$[(2+3)*4]
echo RES1=$RES1

# 案例2:请求出命令行的两个参数[整数]的和 20 50
SUM=$[$1+$2]
echo SUM=$SUM

6. 条件判断

  1. 基本语法
    [ condition ] (注意 condition前后要有空格)
    非空返回true
  2. 判断语句
符号作用
=字符串比较
-lt小于
-le小于等于
-eq等于
-gt大于
-ge大于等于
-ne不等于
-f文件存在并是一个常规文件
-e文件存在
-d文件存在并是一个目录

案例:

#!/bin/bash
# 案例1:"ok"是否等于"ok"
if [ "ok"="ok" ]
then
        echo "equal"
fi
# 案例2:23是否大于等于22
if [ 23 -ge 22 ]
then
        echo "yes"
fi
# 案例3:/root/shellcode/aaa.txt文件是否存在
if [ -f /root/shellcode/aaa.txt ]
then
        echo "存在"
fi

7. 流程控制

  1. if 判断
    同上

  2. case 语句

    #!/bin/bash
    # 案例:当命令行参数是1时,输出周一,2,输出周二,其他情况输出other
    case $1 in
    "1")
    echo "周一"
    ;;
    "2")
    echo "周二"
    ;;
    *)
    echo "other"
    ;;
    esac
    
  3. for 循环

    #!/bin/bash
    # 案例1:打印命令行输入的参数[可看出$*和$@的区别]
    # $*是吧输入的参数当作一个整体,所以只会输出一句
    for i in "$*"
    do
            echo "num is $i"
    done
    # 使用$@来获取输入的参数,所以有几个参数,就输出几句
    echo "========================="
    for j in "$@"
    do
            echo "num is $j"
    done
    

    在这里插入图片描述

    #!/bin/bash
    # 案例:把1-100的和输出显示
    SUM=0
    for (( i=1;i<=100;i++ ))
    do
            SUM=$[ $SUM+$i ]
    done
    echo "总和"=$SUM
    
  4. while 循环

    #!/bin/bash
    # 案例:从命令行输入一个数n,统计从1加到n的和是多少
    SUM=0
    i=0
    while [ $i -le $1 ]
    do
            SUM=$[ $SUM+$i ]
            i=$[ $i+1 ]
    done
    echo "执行结果为$SUM"
    

8. read读取控制台输入

read(选项)(参数)
选项:
-p: 指定读取数值时的提示符
-t:指定读取数值时的等待时间,没在指定时间内输入,就退出不再等待
案例

#!/bin/bash
# 案例:读取控制台输入一个NUM1值
read -p "请输入一个数NUM1=" NUM1
echo "输入的数NUM1是$NUM1"
# 案例2:读取控制台输入一个NUM2值,在10秒内输入
read -t 10 -p "请输入一个数NUM2=" NUM2
echo "输入的数NUM2是$NUM2"

9. 函数

  1. 系统函数

    basename /root/aaa/test.txt 获取文件名
    dirname /root/aaa/test.txt  获取目录名
    
  2. 自定义函数
    案例:

    #!/bin/bash
    # 案例:计算输入两个参数的和(动态获取)getSum
    function getSum(){
            SUM=$[ $n1+$n2 ]
            echo "和=$SUM"
    }
    # 输入两个值
    read -p "请输入n1=" n1
    
    read -p "请输入n2=" n2
    getSum $n1 $n2
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值