高级bash脚本编程

高级bash脚本编程 #

变量 #

内部变量 #

  • $BASH

  • $EDITOR

  • $EUID 有效用户ID

  • $FUNCNAME 当前函数名

  • $GLOBIGNORE 文件名模式匹配列表,忽略

  • $GROUPS 当前用户所属的组

  • $HOME

  • $HOSTNAME

  • $HOSTTYPE 当前主机类型

  • $IFS 内部域分隔符,默认为空白(空格, 制表符,和换行符),这个变量用来决定Bash在解释字符串时如何识别域, 或者单词边界.

    • $ echo $IFS | cat -vte
      $
      
    • $ bash -c 'set w x y z; IFS="+"; echo "$*"'
      w+x+y+z
      
  • $LINENO 记录自身在脚本中的行号

  • $OLDPWD 之前所在目录

  • $PATH 可执行文件搜索路径

  • $PPID 父进程PID

  • $PS1 主提示符

  • $PS2 第二提示符,当需要额外输入的时候,就会看到它,默认为>

  • $PS3 select循环中显示

  • $PS4 当使用-x调试脚本的时候,每行开头显示的,默认为+

  • $PWD 当前路径

  • $TMOUT 超时'

    • #!/bin/bash
      TMOUT=3    # 提示输入时间为3秒.
      echo "What is your favorite song?"
      echo "Quickly now, you only have $TMOUT seconds to answer!"
      read song
      if [ -z "$song" ]
      then
          song="(no answer)"
      fi
      echo "Your favorite song is $song."
      
  • $UID

  • $0,$1,$2,…,${10}… 位置参数,从命令行传给脚本,或者使用set接收

  • $# 位置参数的个数

  • $* 所有的位置参数都被看成一个单词

  • $@ 所有位置参数,但是每个参数都是独立的引用字符串

  • $! 运行在后台的最后一个作业的PID

  • $_ 之前执行命令的最后一个参数

  • $? 命令函数脚本本身的退出状态码

  • $$ 脚本自身的PID