shell特殊符号及变量

1.变量定义
shell变量名称的开头是一个字母或下划线符号,后面可接任意长度字母、数字或下划线符号。
变量赋值的方式为:变量名称=值,中间无空格,单行可多次赋值。如val0=abc val1=kjh
如果要获得变量的值,需在变量名称前加$字符,如val2=$val1,shell会对$(...)里的算术表达式进行计算
当所赋予的值包含空格时,需加引号,如val3=“abc def hji”
要将多个变量连接起来时,要加引号,如val4=“$val0 $val1 $val2 $val3”

2.内置的shell变量

# 目前进程的参数个数
@ 传递给当前进程的命令行参数。置于双引号内,会展开为个别的参数
* 当前进程的命令行参数。置于双引号内,会展开为一单独参数
- 在引用是给予shell的选项
前一命令的退出状态
$ shell进程的进程编号
0 shell程序的名称
最后一个后台命令的进程编号
   
HOME 根目录
IFS 内部的字段分割器
LANG 当前locale的默认名称
LC_ALL 当前locale的名称
PATH 命令的查找路径
PPID 父进程的进程编号
PS1 主要的命令提示字符串。默认为“$”
PS2 行继续的提示字符串。默认为“>”
PS4 以set -x设置的执行跟踪的提示字符串。默认为“+”
PWD 当前工作目

3.命令行参数
第一个参数表示为$1,第二个$2,当大于10时,加{},如第十个${10}
$# 提供传递到shell脚本或函数的参数总数
$*,$@ 一次表示所有的命令行参数
"$*" 将所有参数视为单个字符串="$1 $2..."
"$@" 将所有参数视为单独的个体="$1""$2"...

4.变量模式匹配
${varname:-word} 如果varname存在且非null,则返回其值;否则返回word
${varname:=word} 如果varname存在且非null,则返回它的值;否则设置它为word,并返回其值
${varname:?message} 如果varname存在且非null,则返回它的值;否则显示varname:message,并退出命令或脚本
${varname:+word} 如果varname存在且非null,则返回word;否则返回null
(:)冒号可省略,如果省略,则“存在且非null”改为“存在”
${varname#pattern} 如果模式匹配于变量值的开头,则删除匹配的最短部分,并返回剩下的部分
${varname##pattern} 如果模式匹配于变量值的开头,则删除匹配的最长部分,并返回剩下的部分
${varname%pattern} 如果模式匹配于变量值的结尾,则删除匹配的最短部分,并返回剩下的部分
${varname%%pattern} 如果模式匹配于变量值的结尾,则删除匹配的最长部分,并返回剩下的部分

5.特殊符号

|--重定向运算符;<、>、>>、| 、<>
|--》set -C
| 执行上面的命令可打开shell所谓的禁止覆盖选项,如>重定向遇到目标文件存在时,就会失败
|--》以<>打开一个文件作为输入输出
| 一般来说,<以只读模式打开文件,>只写,<>则是可读可写,如program<>file
|--》文件描述符
| 0、1、2对应标准输入输出及出错
|--》exec:在当前shell中启动新程序,不过此为单向操作,控制权不肯能够回到脚本,唯一例外是新程序无法调用

你可能感兴趣的:(shell特殊符号及变量)