变量类型
字符串 a='xx'
数字 i=1314
布尔 true false
数组 array=(a b c)
函数 foo(){echo hello world}
高于4.x的shell没有hash词典功能
shell中的一些预变量
$$ 当前执行的进程PID
$0 当前执行的shell文件名
$# 传递给shell程序的所有位置参数个数
$* 传递给shell程序的所有位置参数的值
$? 上一条命令执行的返回码 (0表示成功)
$! 上一条后台进程的pid
$1~$9 对应shell程序中前9个行参数
${10}~${n} 对应shell程序中更多的行参数(只对ksh)
$PWD:当前目录
$USER:当前是谁
$HOME:当前主目录
~:当前主目录
$PATH:当前环境
变量的定义
a=1 #数字定义
b=seveniruby # 字符串定义
d="hello from testhome" # 字符串定义
e='hello from "清华大学"' # 字符串定义
arr=(1 2 3 4 jkjkfjskd) # 数组定义,以空格分隔
=左右不要有空格
如果内容有空格,需要使用单引号或者双引号
双引号支持转义$开头的变量会被自动替换
变量的使用
数字和字符串使用
$a或者${a}
数组索引的使用
arr = (1 2 3 4 dsjfgsh)
获取固定下标1的值${arr[1]}
获取数组的所有值${arr[@]}
获取数组的长度${arr[*]}或者${arr[@]}
数组的增删改查
改:
arr[1]=100 #此时arr为(1 100 3 4 dsjfgsh)
增加: