shell预定义变量及标准变量

export,readonly

  • export 用于修改或打印环境变量

    • export name[=word] 修改环境变量 export PATH=$PATH:/home/bin
    • export -p 打印出环境变量的名称与值
  • readonly 使变量不能修改

    • readonly name[=word] readonly a=hello 是的a变量不能被修改
    • readonly -p 打印出所有只读变量的名称与值

env,unset

  • env 临时改变环境变量的值

    • env -i 初始化环境变量,丢弃任何继承值,仅传递命令上指定的环境变量给程序使用
  • unset 从执行的shell中删除变量与函数

    • unset demo 删除变量demo
    • unset -v hello 删除除了hello以外的变量
    • unset -f test 删除函数test

shell运算符

  • ${varname:-word}

    • 如果varname存在且不为null,则返回vaname的值,否则返回word
  • ${varname:=word}

    • 如果varname存在且不为null,则返回vaname的值,否则设置它为word并返回
  • ${varname:?message}

    • 如果varname存在且不为null,则返回vaname的值,否则设置显示varname:message,并退出当前命令或脚本
  • ${varname:+word}

    • 如果varname存在且不为null,则返回word,否则返回null
  • ${varname#pattern}

    • 如果模式匹配于变量值的开头处,则删除匹配的最短部分,并返回剩下部分
  • ${varname##pattern}

    • 如果模式匹配位于变量值的结尾处,则删除匹配的最短部分,并返回剩下的部分
  • ${varname%pattern}

    • 如果模式匹配位于变量的结尾处,则删除匹配的最长部分,并返回剩下的部分
  • ${varname%%pattern}

    • 如果模式匹配位于变量值的结尾处,则删除匹配的最长部分,并返回剩下的部分

shell变量

  • $#

    • 提供给shell脚本或函数的参数的总数
  • $*,$@

    • 一次表示所有的命令行参数
  • “$*”

    • 将所有的命令行参数视为单个字符串,等同于”$1 $2”
  • “$@”

    • 将所有的命令行参数视为单独的个体,也就是单独字符串,等同于”$1”,”$2”
  • $0

    • 获取当前执行shell的脚本文件名,如果执行脚本带路径那么就包括脚本路径
  • $n

    • 获取当前执行shell脚本的第n个参数,n=1..9,当n为0时表示脚本文件名,如果n大于9,需要使用大括号括起来${10}
  • $$

    • 获取当前shell的进程号
  • $!

    • 执行上一个指令的PID
  • $?

    • 获取执行上一个指令的返回值(0为成功,非0为失败)
  • $_

    • 在此之前执行的命令或脚本的最后一个参数

特殊变量

  • #

    • 目前进程的参数个数
  • @

    • 传递给当前进程的命令行参数
  • *

    • 当前进程的命令行参数
  • -

    • 在引用时给予shell的选项
  • ?

    • 前一命令的推出状态
  • $

    • shell进程的进程编号
  • 0

    • shell程序的名称
  • !

    • 最近一个后台命令的进程编号
  • ENV

    • $ENV的值是可展开参数。仅用于交互式shell中
  • HOME

    • 根目录
  • IFS

    • 内部的字段分割器
  • LANG

    • 当前locale的默认名称
  • LC_ALL

    • 当前locale的名称
  • LC_COLLATE

    • 用来排序字符的当前locale名称
  • LC_CTYPE

    • 在模式匹配期间,用来确定字符类别的当前locale的名称
  • LC_MESSAGES

    • 输出信息的当前语言的名称
  • LINENO

    • 刚执行过的行在脚本或函数内的行编号
  • NLSPATH

    • 在$LC_MESSAGES(XSI)所给定的信息语言里,信息目录位置
  • PATH

    • 命令的查找路径
  • PPID

    • 父进程的进程编号
  • PS1

    • 主要的命令提示字符串。默认为”$”
  • PS2

    • 行继续的提示字符串。默认为”>”
  • PS4

    • 以set -x设置的执行跟踪的提示字符串。默认位”+”
  • PWD

    • 当前工作目录

shell内置变量

* 可以使用man cd查看
  • alias,unalias

    • 定义别名,删除别名
  • bg,fg,jobs,kill

    • 用于工作控制,它是一个操作系统工具,可将工作移动到后台执行,或由后台执行中移出
  • fc

    • 管理shell之前已存储的执行过的命令历史,允许交互式用户再次调用之前用过的命令,编辑它以及再重新执行它
  • times

    • 打印由shell及所有子进程所累积执行迄今的cpu时间
  • umask

    • 用来设置文件监理师的权限掩码
  • PIPESTATUS

    • 存储上次运行的管道或命令的退出状态的数组
  • REPLY

    • read命令没有提供变量情况下的默认变量
  • SECOND

    • 返回shell运行的秒数
  • TMOUT

    • 用于内置命令:read,select,或者交互式bash shell.如果TMOUT数值为证,则使用它的前面3个命令在$TMOUT秒之后超时.如果等于0或者为负数,则将其忽略

*

坚持原创技术分享,您的支持将鼓励我继续创作!