zoukankan      html  css  js  c++  java
  • shell命令注意点

    unset

    不能删除readonly的变量
    实例:

    #!/bin/bash
    
    name="lalala"
    readonly name
    unset name
    

    执行结果:

    line5:unset:name:cannot unset:readonly variable
    

    单引号字符的限制

    单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
    单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。

    双引号的优点:

    • 双引号里可以有变量
    • 双引号里可以出现转义字符

    实例:拼接字符串

    #!/bin/bash
    your_name="runoob"
    # 使用双引号拼接
    greeting="hello, "$your_name" !"
    greeting_1="hello, ${your_name} !"
    echo $greeting  $greeting_1
    # 使用单引号拼接
    greeting_2='hello, '$your_name' !'
    greeting_3='hello, ${your_name} !'
    echo $greeting_2  $greeting_3
    

    执行结果:

    hello, runoob ! hello, runoob !
    hello, runoob ! hello, ${your_name} !
    

    $* 与 $@ 区别

    • 相同点:都是引用所有参数。
    • 不同点:只有在双引号中体现出来。假设在脚本运行时写了三个参数 1、2、3,,则 " * " 等价于 "1 2 3"(传递了一个参数),而 "@" 等价于 "1" "2" "3"(传递了三个参数)。
    #!/bin/bash
    
    echo "-- $* 演示 ---"
    for i in "$*"; do
        echo $i
    done
    
    echo "-- $@ 演示 ---"
    for i in "$@"; do
        echo $i
    done
    

    执行脚本,输出结果如下所示:

    $ chmod +x test.sh 
    $ ./test.sh 1 2 3
    -- $* 演示 ---
    1 2 3
    -- $@ 演示 ---
    1
    2
    3
    

    传递参数

    $0 为执行的文件名

    在为shell脚本传递的参数中如果包含空格,应该使用单引号或者双引号将该参数括起来,以便于脚本将这个参数作为整体来接收。

    #!/bin/bash
    
    echo "Shell 传递参数实例!";
    echo "执行的文件名:$0";
    echo "第一个参数为:$1";
    echo "第二个参数为:$2";
    echo "第三个参数为:$3";
    

    为脚本设置可执行权限,并执行脚本,输出结果如下所示:

    $ chmod +x test.sh 
    $ ./test.sh 1 2 3
    Shell 传递参数实例!
    执行的文件名:./test.sh
    第一个参数为:1
    第二个参数为:2
    第三个参数为:3
    

    echo

    • 双引号单引号和啥都不加输出效果是一样的
    • 读取输入:read
    • 功能类似的有printf,不过printf支持格式化输出,功能更强大
    #!/bin/sh
    read name 
    echo "$name It is a test"
    

    以上代码保存为 test.sh,name 接收标准输入的变量,结果将是:

    [root@www ~]# sh test.sh
    OK                     #标准输入
    OK It is a test        #输出
    

    函数

    格式:

    [ function ] funname [()]
    
    {
    
        action;
    
        [return int;]
    
    }
    

    说明:

    • 可以带function fun() 定义,也可以直接fun() 定义,不带任何参数。
    • 参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。 return后跟数值n(0-255)

    下面的例子定义了一个函数并进行调用:

    #!/bin/bash
    
    demoFun(){
        echo "这是我的第一个 shell 函数!"
    }
    echo "-----函数开始执行-----"
    demoFun
    echo "-----函数执行完毕-----"
    

    输出结果:

    
    -----函数开始执行-----
    这是我的第一个 shell 函数!
    -----函数执行完毕-----
    

    文件引用

    格式:

    . filename   # 注意点号(.)和文件名中间有一空格
    
    或
    
    source filename
    

    参考:http://www.runoob.com/linux/linux-shell.html

  • 相关阅读:
    深度学习模型调参
    人脸神经网络及算法整理
    【转】python pip install指定国内源
    人脸识别数据集整理
    卷积神经网络整理+ResNet50
    【转载】人脸检测通用评价标准
    【转载】InsightFace算法学习
    Linux手动识别4G模块
    openwrt监控程序(守护进程)
    测试流程详解
  • 原文地址:https://www.cnblogs.com/diffx/p/9623352.html
Copyright © 2011-2022 走看看