• shell-基础


    一、变量的定义,中间没有空格

    a=1
    b="123"

    变量的引用,多数情况下可以去掉{},{}用于区分变量的边界。
    ${a}
    ${b}
    #举例
    num=2 
    echo "this is the $numnd"    #this is the //因为没有定义变量,找不到变量边界
    echo "this is the ${num}nd"  #this is the 2nd
    
    字符串中对变量的引用
    #如果在某个字符传中引用已定义的变量,此字符串必须是双引号hell="123${a}"
    #!/bin/bash
    url="http://c.biancheng.net"
    website1='C语言中文网:${url}'
    website2="C语言中文网:${url}"
    echo $website1
    echo $website2
    运行结果:
    C语言中文网:${url}
    C语言中文网:http://c.biancheng.net
    

    总结

    单引号' '包围变量的值时,单引号里面是什么就输出什么,即使内容中有变量和命令(命令需要反引起来)也会把它们原样输出。
    双引号" "包围变量的值时,输出时会先解析里面的变量和命令,而不是把双引号中的变量名和命令原样输出。

    shell中所有的类型默认都是字符串类型,所以不手工指定变量类型是不能进行数值运算,注意这里指的是数值运算,具体如何数值运算,参见:

    https://blog.mimvp.com/article/5994.html

    二、反引号(``)

    # echo The date and time is `date`
    The date and time is 三 6月 15 06:10:35 CST 2005
    # echo Your current working directory is $(pwd)
    Your current working directory is /home/howard/script.
    

    总结

    shell能够将一个命令的标准输出插在一个命令行中任何位置
    shell中有两种方法作命令替换:把shell命令用反引号/或者$(...)结构括起来,其中$(...)格式受到POSIX标准支持,也利于嵌套。

    三、加不加分号的区别

    #单行语句一般要用到分号来区分代码块,例如
    if [ "$PS1" ]; then echo test is ok; fi
    test is ok
    /#该代码若写作多行,用换行符来区分代码块,则无需用到分号
    if [ "PS1" ]
      then echo "test is ok"
    fi
    

    四、shell中echo单引号,双引号,不加引号的区别

    https://www.cnblogs.com/dazhuwang/p/13203248.html

    #声明变量 VAR01 并用echo打印出来,第一次直接打印,第二次用双引号括起来,从内容看好像没什么区别
    [root@localhost ~]# VAR01=100
    [root@localhost ~]# echo $VAR01
    100
    [root@localhost ~]# echo "$VAR01"
    100
    #声明变量 VAR02 内容为字符串,ABC 之间有多个空格
    [root@localhost ~]# VAR02="A   B   C"
    #直接打印变量时,输出内容只保留了每个字幕间一个空格
    [root@localhost ~]# echo $VAR02
    A B C
    #使用双引号括起的输出内容和变量定义时的内容是完全一致的
    [root@localhost ~]# echo "$VAR02"
    A   B   C
    

    总结

    单引号:所见即所得,即将单引号内的内容原样输出,任何字符都只会当成普通字符,除了单引号本身。

    双引号:把双引号内的内容输出出来,如果内容中有命令,变量等,会先把变量,命令解析出结果,然后再输出最终内容来。

    无引号:把内容输出出来,但可能不会将含有空格的字符串视为一个整体输出,如果内容中有命令,变量等,会先把变量,命令解析结果,然后再输出最终内容来,如果字符串中带有空格等特殊字符,则不能完整的输出,需要改加双引号,一般连续的字符串,数字,路径等可以用,不过最好用双引号替代之。

  • 相关阅读:
    php apc
    nginx https
    js弹出确认框,挺全
    websocket nodejs
    nodejs express测试
    【C++】Mandelbrot集绘制(生成ppm文件)
    【Scheme】Huffman树
    【Scheme】符号求导
    【Scheme】树结构
    【Scheme】序列的操作
  • 原文地址:https://www.cnblogs.com/retry/p/13864436.html
Copyright © 2020-2023  润新知