变量
变量
1 A="a b c def" # 将字符串复制给变量 2 A=`cmd` # 将命令结果赋给变量 3 A=$(cmd) # 将命令结果赋给变量 4 eval a=\$$a # 间接调用 5 i=2&&echo $((i+3)) # 计算后打印新变量结果 6 i=2&&echo $[i+3] # 计算后打印新变量结果 7 a=$((2>6?5:8)) # 判断两个值满足条件的赋值给变量 8 A=(a b c def) # 将变量定义为組数 9 $1 $2 $* # 位置参数 *代表所有 10 env # 查看环境变量 11 env | grep "name" # 查看定义的环境变量 12 set # 查看环境变量和本地变量 13 read name # 输入变量 14 readonly name # 把name这个变量设置为只读变量,不允许再次设置 15 readonly # 查看系统存在的只读文件 16 export name # 变量name由本地升为环境 17 export name="RedHat" # 直接定义name为环境变量 18 export Stat$nu=2222 # 变量引用变量赋值 19 unset name # 变量清除 20 export -n name # 去掉只读变量 21 shift # 用于移动位置变量,调整位置变量,使$3的值赋给$2.$2的值赋予$1 22 name + 0 # 将字符串转换为数字 23 number " " # 将数字转换成字符串
定义变量类型
1 declare 或 typeset 2 -r 只读(readonly一样) 3 -i 整形 4 -a 数组 5 -f 函数 6 -x export 7 declare -i n=0
系统变量
1 $0 # 脚本启动名(包括路径) 2 $n # 第n个参数,n=1,2,…9 3 $* # 所有参数列表(不包括脚本本身) 4 $@ # 所有参数列表(独立字符串) 5 $# # 参数个数(不包括脚本本身) 6 $$ # 当前程式的PID 7 $! # 执行上一个指令的PID 8 $? # 执行上一个指令的返回值
变量引用技巧
1 ${name:+value} # 如果设置了name,就把value显示,未设置则为空 2 ${name:-value} # 如果设置了name,就显示它,未设置就显示value 3 ${name:?value} # 未设置提示用户错误信息value 4 ${name:=value} # 如未设置就把value设置并显示<写入本地中> 5 ${#A} # 可得到变量中字节 6 ${#A[*]} # 数组个数 7 ${A[*]} # 数组所有元素 8 ${A[@]} # 数组所有元素(标准) 9 ${A[2]} # 脚本的一个参数或数组第三位 10 ${A:4:9} # 取变量中第4位到后面9位 11 ${A/www/http} # 取变量并且替换每行第一个关键字 12 ${A//www/http} # 取变量并且全部替换每行关键字 13 14 定义了一个变量: file=/dir1/dir2/dir3/my.file.txt 15 ${file#*/} # 去掉第一条 / 及其左边的字串:dir1/dir2/dir3/my.file.txt 16 ${file##*/} # 去掉最后一条 / 及其左边的字串:my.file.txt 17 ${file#*.} # 去掉第一个 . 及其左边的字串:file.txt 18 ${file##*.} # 去掉最后一个 . 及其左边的字串:txt 19 ${file%/*} # 去掉最后条 / 及其右边的字串:/dir1/dir2/dir3 20 ${file%%/*} # 去掉第一条 / 及其右边的字串:(空值) 21 ${file%.*} # 去掉最后一个 . 及其右边的字串:/dir1/dir2/dir3/my.file 22 ${file%%.*} # 去掉第一个 . 及其右边的字串:/dir1/dir2/dir3/my 23 # # 是去掉左边(在键盘上 # 在 $ 之左边) 24 # % 是去掉右边(在键盘上 % 在 $ 之右边) 25 # 单一符号是最小匹配﹔两个符号是最大匹配