变量

变量

 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 #   单一符号是最小匹配﹔两个符号是最大匹配

 

posted @ 2019-09-17 11:36  凌空a  阅读(132)  评论(0编辑  收藏  举报