当前位置:   article > 正文

shell 编程中内置的变量(冷门又好用)_shell host_ram内置变量

shell host_ram内置变量

简介

    分别盘点一下 shell 中的内置变量,真的巨好用!!!包括:环境变量类、shell 变量类、终端设置类和其他一些变量。

        

常用的内置变量目录如下

1. 环境变量类

$MACHTYPE:机器类型

$OSTYPE:操作系统类型

$HOSTNAME:当前主机名

$HOME:当前用户家目录

$USER:当前用户名

$SHELL:当前shell的路径

2. shell 变量类

$PWD:当前目录

$OLDPWD:上一个工作目录

$?:上一个命令的状态码

$0:当前 shell 脚本名称

$$:当前 shell 脚本 PID

$PPID:当前 shell 脚本的父ID

$IFS:字段分隔符

3. 终端类

$TERM:终端的类型

$PS1:设置终端提示符

$PS2:设置终端多行提示符

$COLUMNS:终端的宽度

$LINES:终端的高度

4. 其他变量

$RANDOM:随机数

$SECONDS:shell 脚本启动的秒数


        

1. 环境变量

$MACHTYPE:机器类型

echo $MACHTYPE

        

$OSTYPE:操作系统类型

echo $OSTYPE

        

$HOSTNAME:当前主机名

echo $HOSTNAME

        

$HOME:当前用户家目录

  • $HOME 表示当前用户的家目录
echo $HOME

当使用 su 命令切换到另一个用户,也能够识别当前用户的家目录

        

$USER:当前用户名

  • $USER 表示当前用户的名称
echo $USER

当使用 su 命令切换到另一个用户,也能够识别当前用户名

        

$SHELL:当前shell的路径

  • 这个 shell 的路径是指系统 shell 的路径
echo $SHELL


        

2. shell 变量类

$PWD:当前目录

  • $PWD 表示当前终端的路径,不是脚本的路径
echo $PWD

如果需要获取脚本的路径,可以这样写

path=$(dirname `realpath ${BASH_SOURCE}`)

        

$OLDPWD:上一个工作目录

  • $OLDPWD 用来获取上一个工作 目录

      

$?:上一个命令的状态码

状态码的范围是 0~255

  1. 0: 表示命令成功执行。
  2. 1-125: 表示命令执行失败或出现错误。
  3. 126: 表示命令不可执行。可能是因为权限不足或命令无法找到等原因。
  4. 127: 表示命令未找到。通常是因为找不到执行的命令或脚本。
  5. 128+: 表示命令因为收到了一个信号而退出。
  6. 130: 表示命令因为收到了 SIGINT 信号而中断。类似于键盘上按下 Ctrl+C 中断命令的情况。
  7. 137: 表示命令因为收到了 SIGKILL 信号而被终止。
  8. 255: 表示状态码超出了范围。

        

$0:当前 shell 脚本名称

echo $0

        

$$:当前 shell 脚本 PID

echo $$

          

$PPID:当前 shell 脚本的父ID

echo $PPID

我们来查询一下脚本自己的 PID 和父 ID

  1. echo "父ID: $PPID, 自己PID: $$"
  2. ps -ef |grep $PPID |grep -v grep

        

$IFS:字段分隔符

设置字段分隔符

  1. IFS=' ' # 设置分隔符为空格
  2. IFS=',' # 设置分隔符为逗号
  3. IFS=':' # 设置分隔符为冒号
  4. IFS='\t' # 设置分隔符为制表符
  5. IFS='\n' # 设置分隔符为换行
  6. IFS='abc' # 设置分隔符为字符串
  7. IFS=' ;\t' # 设置多个分隔符

        

比如 for 循环一个字符变量

  1. str="AAA BBB,CCC"
  2. IFS=','
  3. for i in ${str};do echo ${i} ;done

        

3. 终端类

$TERM:终端的类型

  • 用于指定当前终端所使用的终端类型

        

$PS1:设置终端提示符

  • $PS1 用于定义命令提示符格式,可以通过修改环境变量的值来自定义。

比如我当前的提示是这样的

【用户名】【主机名】【目录名】

查看一下当前的设置

        

我们来自定义设置一下

【案例一】显示用户名、主机名和工作目录

export PS1="\u@\h:\w$ "

        

【案例二】只显示工作目录

export PS1="\w$ "

        

【案例三】自定义提示符颜色

export PS1="\[\033[01;32m\]\u@\h:\w\[\033[00m\]$ "

        

详细的转译序号说明如下

  1. # 用户名和主机信息
  2. \u:当前用户名
  3. \h:短主机名
  4. \H:完整主机名(包括域名)
  5. \@:12小时制的时间(格式:HH:MM am/pm)
  6. \A:24小时制的时间(格式:HH:MM)
  1. # 工作目录信息
  2. \w:完整工作目录路径
  3. \W:当前工作目录的基名
  4. \d:当前日期(格式:Weekday Month Day)
  1. # 控制文本颜色:
  2. \033[0m:重置所有文本属性,包括颜色。
  3. \033[30m 到 \033[37m:设置文本前景色(即文本的颜色),范围从黑色到白色。
  4. \033[40m 到 \033[47m:设置文本背景色,范围从黑色到白色。
  5. # 控制文本样式:
  6. \033[1m:设置粗体样式。
  7. \033[4m:设置下划线样式。
  8. \033[7m:设置反色样式(即文本背景色与前景色交换)。
  9. # 控制光标位置:
  10. \033[A:将光标上移一行。
  11. \033[B:将光标下移一行。
  12. \033[C:将光标向右移动一格。
  13. \033[D:将光标向左移动一格。

        

$PS2:设置终端多行提示符

先看一下默认的多行提示符

        

设置多行提示符

export PS2=">>> "

        

$COLUMNS:终端的宽度

echo $COLUMNS

手动调整终端宽度也会使变量发生变化

        

通过获取终端宽度 ,可以根据情况输出满屏的字符。

perl -E "say '=' x ${COLUMNS}"

        

$LINES:终端的高度

echo ${LINES}

根据当前高度获取

        

通过获取终端高度,输出满屏的符号

for ((i=1; i<=LINES; i++));do perl -E "say '-' x ${COLUMNS}" ;done

        

4. 其他变量

$RANDOM:随机数

  • 0~32767 之间到随机数

        

如果想控制随机数在 0~100,试试取余的方法

echo $((RANDOM % 100))

        

$SECONDS:shell 脚本启动的秒数

  1. sleep 3
  2. echo $SECONDS

        

如果直接在终端输出,则显示终端启动的秒数

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/215922
推荐阅读
相关标签
  

闽ICP备14008679号