shell 是一种脚本语言,常见的脚本解析器有bash,sh,csh等。shell文件的后缀为.sh
本文主要摘记了Shell的简介,以及Shell的变量。

Shell介绍-简介,变量

简介

Hello world

test.sh代码

1
2
3
4
5
6
#!/bin/bash
#------
#第一个shell程序
#------

echo "Hello World"

运行方式:terminal是基于shell的,所以直接输入文件地址就可以运行,如:./test.sh。如果想要全局使用,则需将文件的目录配置在$PATH全局变量中,如此使用test.sh即可运行,将文件后缀去除,则运行方式将变为test

开头的#!表示使用什么解析器执行。

注释

#开头的行就是注释,shell没有多行注释,但块注释习惯使用如下:

1
2
3
#------
#快注释
#------

输出打印

shell打印输出主要有 echo,printf两个函数。

  • echo

    • 行输出,即输出完后自动换行
    • 由于shell的特性,可以为"",''不加这三种形式,总的来说,在转义字符方面都存在着不同,建议使用""形式输出或者定义字符串。
    • 参数-e,表示执行转义字符。echo默认是不执行的。
  • printf [arguments…]

    • 为模版输出
    • 不会自动换行,换行需要加\n,默认执行转义字符
    • %d,%s替代argument中的值,值的类型需要与%值的类型依次对应;若arguments的值多于中的%值,表示轮回输出arguments
    • 在printf的""''含义相同,但不加却会使语法混乱,从而无法解析,所以为了统一,建议一直使用""

变量/常量

变量

  • 定义/获取变量

    1. 定义格式如下:

      1
      variableName="value"

      特别注意 =前后都不能有空格

      可以通过readonly variableName将变量设置只读

      可以通过unset variableName将变量删除,但不能删除只读变量。

    2. 获取方式如下:$variableName或者${variableName}

      获取变量推荐使用${variableName}方式。

  • 系统变量

    1. 自定义环境变量: export NAME=value(环境变量名习惯由大写字母组成),
      export也可修改系统环境变量,所以自定义的时候需注意NAME冲突。
    2. 系统环境变量,常用的:
      • EUID:当前用户的UID
      • PWD: 当前路径
      • PATH: 命令搜索路径
  • 特殊变量

    • $n

      n为数字,命令输入的集合,所以$0存储的是函数名,$1,..$n存储的是对应位置上的参数

    • $_ 表示最后一个参数

    • $# 表示参数个数
    • $*,$@ 表示所有参数的数组,区别当"$*"形式时,其返回一个字符串,且默认返回为一个空字符串,$@则不变。
    • $? 上个命令的退出状态或者返回值,exit 返回的值,获取打印输出值可以通过命令替换获取
    • $$ 当前Shell进程ID
  • 命令替换

    将指令的输出值赋值给变量,赋值时运行该指令。(同步)

    1
    2
    3
    variableName=`command`
    或者
    variableName=$(command)
  • 变量替换

    格式:`${variableName:<替换标示>}

    替换标示

    • -word 如果变量为空或被unset,那么返回word,且原来变量不变
    • =word 同上,但改变原来变量
    • ?word 如果变量为空或被unset,以word为错误message抛出错误
    • +word 如果变量被定义,那么返回word,且不改变原变量

    注意 word可为字符串,也可以为${变量}