##################################
变量
将变量A 赋值为字串
A="a b c def"
A=`命令`
间接调用
eval a=$$a
将变量A 定义为組数
A=(a b c def)
set a1 a2 a3 a4
$1 $2 $*
在子shell 中运行
(a=bbk)
定义变量类型
declare 或者typeset
-r 只读(readonly 一样)
-i 整形
-a 数组
-f 函数
-x export
declare -i n=0
env # 查看环境变量
env | grep "name" # 查看定义的环境变量
set # 查看环境变量和本地变量
read name # 输入变量
readonly name # 把name 这个变量设置为只读变量,不允许再次设置
readonly # 查看系统存在的只读文件
export name # 变量name 由本地升为环境
export name="RedHat" # 直接定义name 为环境变量
export Stat$nu=2222 # 变量引用变量赋值
unset name # 变量清除
export -n name # 去掉只读变量
shift # 用于移动位置变量,调整位置变量,使$3 的值赋给$2.$2 的值赋予$1
name + 0 # 将字符串转换为数字
number " " # 将数字转换成字符串
常用系统变量
$0 # 脚本启动名(包括路径)
basename $0 # 只取脚本名
$n # 当前程式的第n 个参数,n=1,2,…9
$* # 当前程式的所有参数(不包括脚本本身)
$# # 当前程式的参数个数(不包括脚本本身)
$$ # 当前程式的PID
$! # 执行上一个指令的PID
$? # 执行上一个指令的返回值
变量引用技巧${}
${name:+value} # 如果设置了name,就把value 显示,未设置则为空
${name:-value} # 如果设置了name,就显示它,未设置就显示value
${name:?value} # 未设置提示用户错误信息value
${name:=value} # 如未设置就把value 设置并显示<写入本地中>,
${#A} # 可得到变量中字节
${#A[*]} # 数组个数
${A[2]} # 脚本的一个参数
${A:4:9} # 取变量中第4 位到后面9 位
${A/www/http} # 取变量并且替换每行第一个关键字
${A//www/http} # 取变量并且全部替换每行关键字
定义了一个变量为:
file=/dir1/dir2/dir3/my.file.txt
${file#*/} # 去掉第一条/ 及其左边的字串:dir1/dir2/dir3/my.file.txt
${file##*/} # 去掉最后一条/ 及其左边的字串:my.file.txt
${file#*.} # 去掉第一个. 及其左边的字串:file.txt
${file##*.} # 去掉最后一个. 及其左边的字串:txt
${file%/*} # 去掉最后条/ 及其右边的字串:/dir1/dir2/dir3
${file%%/*} # 去掉第一条/ 及其右边的字串:(空值)
${file%.*} # 去掉最后一个. 及其右边的字串:/dir1/dir2/dir3/my.file
${file%%.*} # 去掉第一个. 及其右边的字串:/dir1/dir2/dir3/my
# # 是去掉左边(在键盘上# 在$ 之左边)
# % 是去掉右边(在键盘上% 在$ 之右边)
# 单一符号是最小匹配﹔两个符号是最大匹配










