基操
# 打印
echo "hello world"
shell变量
# 声明变量
# 直接声明
firstVar="第一个变量"
# 间接声明
# 循环声明变量
for file in (`ls /etc`)
for file in ${ls /etc}
# 使用变量:最好加上花括号,便于阅读
echo ${firstVar}
echo $firstVar
# 声明常量:即设置变量只读(设置后尝试修改则会报错)
onlyReadVar="bb"
readonly onlyReadVar;
# 删除变量:删除后再次使用则为空
deleteVar="bb"
unset deleteVar
字符串
# 声明
# 单引号
myName='bb'
# 直接引用的变量无效,例:输出echo ${myName}
echo 'echo ${myName}'
# 带引号引用的变量有效,例:输出echo bb
echo 'echo '${myName}''
# 不能单独出现一个',转义也不可
# 双引号
myName="bb"
# 直接引用变量/带引号引用变量都有效
echo "echo ${myName}"
# 允许转义字符
# 拼接字符串,如上:
# 单引号字符串只能'${xxx}'方式引用
# 双引号字符串'${xxx}'、${xxx}方式都可
# 字符串长度,输出:2
echo ${#myName}
# 截取子串:${变量名:字符下标:截取长度}
echo ${myName:1:1}
# 查找子串
# 例:查找str中的w和o字符,谁先出现下标是谁,""是必须的
str="hello world"
echo `expr index "${str}" wo`
数组
# 支持一维数组(不支持多维数组),并且没有限定数组的大小(即动态数组)
# 定义
# 直接定义
arr=(1 2 3 4)
# 间接定义
arr=()
arr[0]=1
arr[1]=2
# 读数组
# 读某下标元素
echo ${arr[0]}
# 所有元素
echo ${arr[@]}
# 数组长度
echo ${#arr[@]}
echo ${#arr[*]}