• Shell 从入门到精通(一)


    1、脚本的基本格式

    新建一个文件vim wenwen,往文件里写如下代码:

    #!/bin/bash
    echo "wenwen successful!"
    
    • 1
    • 2

    文件权限,执行文件

    chmod 755 wenwen
    ./wenwen
    
    • 1
    • 2

    2、脚本的执行方式

    每个程序都有自己的解释器,shell的执行方式有以下几种:

    sh            //与bash一样,不需要太添加权限,使用解释器直接解释
    bash          //不需要添加权限,使用解释器直接解释
    ./            //需要添加执行权限
    #!/bin/bash   //需要添加执行权限,只是为了系统好识别
    
    • 1
    • 2
    • 3
    • 4

    3、变量

    (1)自定义变量

    1、定义变量:变量名=变量值
    2、引用变量:$变量名 或者 ${变量名}
    3、查看变量:echo $变量名
    4、取消变量:unset 变量名 作用范围:仅在当前shell中生效

    判断IP是否可以ping通

    #!/bin/bash
    $IP=192.168.1.1
    ping -c1 $IP &>/dev/null && echo "ip $IP ok!" || echo "ip $IP error!"
    
    • 1
    • 2
    • 3
    (2)系统环境变量

    1、定义环境变量:export 变量名,将自定义变量转化成环境变量
    2、引用环境变量:$变量名 或者 ${变量名}
    3、查看环境变量:echo $变量名 env | grep name
    4、取消环境变量:unset 变量名
    5、变量作用范围:当前shell和子shell

    export IP=192.168.1.1
    
    • 1
    #!/bin/bash
    ping -c1 $IP &>/dev/null && echo "ip $IP ok!" || echo "ip $IP error!"
    
    • 1
    • 2
    (3)位置变量

    $1,$2,$3,$4,$5,$6,$7,$8,$9,$10

    #!/bin/bash
    
    ping -c1 $1 &>/dev/null
    
    if [ $1 -eq 0 ];then
            echo "$1 ok!"
    else
            echo "$1 err!"
    fi
    
    //执行该脚本   bash wenwen 1.1.1.1
     结果:1.1.1.1 ok!
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    #!/bin/bash
    echo $1
    echo $2
    echo $3
    ping -c1 $1 &>/dev/null
    
    if [ $? -eq 0 ];then
            echo "$1 ok!"
    else
            echo "$1 err!"
    fi
    
    //执行该脚本 
    sh wenwen test              输出:test
    sh wenwen test test1        输出:test test1
    sh wenwen test test1 test2  输出:test test1 test2
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    (4)预先定义变量
    $0 脚本文件名(三颗心)
    $* 所有的参数
    $@ 所有的参数
    $# 参数的个数(四颗星)
    $$ 当前进程的pid
    $! 上一个后台进程的pid
    $? 上一个命令的返回值,0代表成功(上面用过 五颗星)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    执行该脚本:

    echo "第 3 个位置参数是 $3"
    echo "第 2 个位置参数是 $2"
    echo "第 1 个位置参数是 $1"
    echo "所有的参数是:$*"
    echo "所有的参数是:$@"
    echo "参数的个数是:$#"
    echo "当前进程的 PID 是:$$"
    echo '$4='$4
    echo '$5='$5
    echo '$6='$6
    echo '$*='$*
    echo '$#='$$
    echo '$$='$$
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    在这里插入图片描述

  • 相关阅读:
    HIVE-17824,删除hdfs分区信息,清理metastore元数据
    卧式钢筋切割机设计
    一、何为算法,什么是伪代码
    如何为无属性图设置节点特征?
    前端开发面试题自测
    Emmet详解
    47、Python绘图
    简单粗暴提升yolov5小目标检测能力
    如何保证分布式情况下的幂等性
    QT QDockWidget
  • 原文地址:https://blog.csdn.net/didi1663478999/article/details/127865755