初识shell
壹、shell变量
1. 常用方式
```
# 1. 定义变量
abc='abc'
ABC
_abc
a1
2. 使用变量
${abc}
echo $abc
3. 只读变量:将变量a1变为只读
readonly a1
4. 删除变量:删除变量ABC
unset ABC
```
2. 变量类型
- 局部变量:仅在当前shell实例中有效
- 环境变量:所有的程序,包括shell启动的程序都能访问环境变量;必要时shell脚本可以自定义环境变量
- shell变量:shell程序设置的特殊变量。有一部分是环境变量,有一部分是局部变量
3. shell字符串:可以用单引号、双引号,也可以不用引号(保持良好编程习惯,最好用引号)
```
# 1. 单引号:串中可以有成对的单引号,但是不能有单个的单引号;单引号中的变量是无效的
str1='string one'
2. 双引号:可以有转义字符;可以有变量
str2="string two ${abc} \n"
3. 获取字符串长度
echo ${#str1}
4. 提取子串
echo ${str:1:3}
5. 查找子串:查找字母i或o的位置,哪个先出现就返回哪个
echo expr index "$str1" io
```
4. shell数组
```
# 1. 定义数组:只支持一维数组;可以使用不连续的下标,而且范围不受限
arr=(0 1 2)
arr[5]=3
arr[7]=4
2. 读取数组
${arr[5]} # 获取单个元素
${arr[@]} # 获取所有元素
3. 获取数组的长度
3.1 获取数组元素的个数
${#arr[@]}
${#arr[*]}
# 3.2 获取单个元素的长度
${#arr[5]}
```
5. shell注释
```
# 1. 单行注释
用#开头一行
2. 多行注释:下面EOF也可以用其他字符代替
:<<EOF
*******
*******
*******
EOF
```
贰、shell流程控制
1. if else
a=10 b=20 if [ $a -eq $b ] # 判断条件写在[]中,[ $a -eq $b ]可以换成(( $a == $b )) then echo "a 等于 b" elif [ $a -gt $b ] # 判断条件写在[]中,[ $a -gt $b ]可以换成(( $a > $b )) then echo "a 大于 b" elif [ $a -lt $b ] # 判断条件写在[]中,[ $a -lt $b ]可以换成(( $a < $b )) then echo "a 小于 b" else echo "没有符合的条件" fi
2. for
for loop in 1 2 3 4 5 do echo "The value is: $loop" done
3. while
int=1 while(( $int<=5 )) do echo $int let "int++" done
4. 无限循环
# 1. 用while while : do command done # 2. 用for for(( ; ; ))
5. until:与while相反
until condition do command done
6. case...esac
```
site="runoob"
case "$site" in
"runoob") echo "菜鸟教程"
;;
"google") echo "Google 搜索"
;;
"taobao") echo "淘宝网"
;;
esac
```
7. 跳出循环
break、continue
叁、shell函数
# 1. 定义函数
[ function ] funname [()]
{
action;
[return int;]
}
2. 函数参数
参考来源:
Shell 变量

浙公网安备 33010602011771号