天天看点

17、内置变量、特殊变量、字符操作、声明变量 学习笔记

1、bash的内置变量

$PATH            环境变量路径

$HOSTNAME        系统主机名

$UID             系统当前用户ID

$HISTFILE        历史文件存放路径

$HISTSIZE        系统可以保存的历史记录条目数

$HISTFILESIZE    历史文件可以保存的历史记录条目数

$HISTCONTROL     历史命令显示控制

$BASH            bash二进制程序文件的路径

$BASH_SUBSHELL   子shell的层次

$BASH_VERSION    shell版本

$EDITOR          系统默认编辑器

$EUID            有效的用户ID

$UID             用户的ID号

$FUNCNAME        当前函数的名称

$GROUPS          当前用户所属的组

$HOME            当前用户的家目录

$HOSTTYPE        主机类型,用来识别系统硬件是32位还是64位

$MACHTYPE        平台类型

$OSTYPEOS        类型

$OLDPWD          上次所在路径

$PWD             当前路径

$IFS             输入数据时字段分隔符,默认为空白符(空格、制表符、换行符)

$PPID            父进程ID

$PS1             主提示符

$PS2             第二提示符,补充完全命令输入时的提示符

$PS3             第三提示符,用于select命令中

$PS4             第四提示符,当使用-x选项调用脚本时,显示的提示符,默认为+号

$SECONDS         当前脚本已经运行的时长

$SHLVL           shell级别,bash被嵌入的深度

2、特殊变量

$0                脚本名称自身

$1, $2, ...       位置参数

$#                命令行参数个数

$*                所有的参数,被当作一个字符串

$@                所有的参数,每个参数都是一个独立的字符串

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

$_                上一条命令的最后一个参数的值

$?                上一条命令状态返回值

$$                脚本自身的PID

3、操作字符串

${variable}: 变量引用

${varible:-default}:如果variable没有声明或者为空,则返回default字串,否则返回variable自身的值

${varible:+default}:如果variable没有声明或者为空,则返回空字串,否则返回default

${varible:=default}:如果variable没有声明或者为空,则返回default字串,并且将default赋值给variable,否则返回variable自身值

${varible:?default}:如果variable没有声明或者为空,则以default为错误信息返回,否则返回variable自身的值

${#variable}: 返回变量中字符串的长度

子串消除:

${varilable#*pattern}:  查找variable中自左而右第一次被pattern匹配到的串,将此串及向左的所有内容都删除

${varilable##*pattern}: 查找variable中自左而右最后一次被pattern匹配到的串,将此串及向左的所有内容都删除

${varilable%pattern*}:  查找variable中自右而左第一次被pattern匹配到的串,将此串及向右的所有内容都删除

${varilable%%pattern*}: 查找variable中自右而左最后一次被pattern匹配到的串,将此串及向右的所有内容都删除

取子串:

${variable:pos}:     取从pos+1开始往后的所有字符

${variable:pos:num}: 取从post+1开始往后的num个字符

子串替换

${variable/Pattern/Replacement}: 以Pattern为模块匹配variable中的字串,将第一次匹配到的内容替换为Replacement

${variable//Pattern/Replacement}:以Pattern为模块匹配variable中的字串,将匹配到的内容全部替换为Replacement

4、声明变量:

declare

    -i: 整型

    -a: 数组

    -x: 环境变量

    -r: 只读变量,相当于readonly

    -f: 声明函数

      本文转自开源殿堂 51CTO博客,原文链接:http://blog.51cto.com/kaiyuandiantang/1964719,如需转载请自行联系原作者