概述
配置文件,例如 /etc/profile、/etc/profile、~/.bashrc等
变量与函数
#! /bin/bash
val_a=10 #赋值数值
val_b='hello.' #单引号表示纯字符
val_c="hello ${val_a}world." #双引号中会解析shell语句
val_d=$(ls) #执行shell命令
function func_a() { #定义函数
local val_e='on func()' #标为局部变量,函数内使用
val_f='on shell process' #全局变量,在定义它的进程中有效,不局限于文件
echo ${val_e}
return 255; #返回值最大255
}
export val_g=‘inheritance’ #导出变量,当前shel进程及其子进程中有效,父进程关闭后失效
func_a #在定义之后调用函数
echo $? #获取函数返回值
特殊变量
数值测试参数 | |
---|---|
$0 | 当前脚本的文件名 |
$n(n≥1) | 传递给脚本或函数的参数。n 是一个数字,表示第几个参 |
$# | 传递给脚本或函数的参数个数 |
$* | 传递给脚本或函数的所有参数,合并为一个参数 |
$@ | 传递给脚本或函数的所有参数,保持参数独立 |
$? | 上个命令的退出状态,或函数的返回值 |
$$ | 当前 Shell 进程 ID |
test
数值测试参数 | |
---|---|
-eq | 等于则为真 |
-ne | 不等于则为真 |
-gt | 大于则为真 |
-ge | 大于等于则为真 |
-lt | 小于则为真 |
-le | 小于等于则为真 |
字符串测试参数 | |
---|---|
= | 等于则为真 |
!= | 不相等则为真 |
-z 字符串 | 字符串的长度为零则为真 |
-n 字符串 | 字符串的长度不为零则为真 |
文件测试参数 | |
---|---|
-e 文件名 | 如果文件存在则为真 |
-r 文件名 | 如果文件存在且可读则为真 |
-w 文件名 | 如果文件存在且可写则为真 |
-x 文件名 | 如果文件存在且可执行则为真 |
-s 文件名 | 如果文件存在且至少有一个字符则为真 |
-d 文件名 | 如果文件存在且为目录则为真 |
-f 文件名 | 如果文件存在且为普通文件则为真 |
-c 文件名 | 如果文件存在且为字符型特殊文件则为真 |
-b 文件名 | 如果文件存在且为块特殊文件则为真 |
if
#! /bin/bash
if [ -e "b.txt" ];then
echo "file test ok"
elif [ "AA" = "AB" ];then
echo "string test ok"
elif [ 22 -eq 22 ];then
echo "number test ok"
else
echo "NULL"
fi
case
#! /bin/bash
val=AA
case $val in
8) echo 'val=8'
;;
G) echo 'val=G'
;;
*) echo "val=${val}"
;;
esac