初识shell

壹、shell变量

1. 常用方式

```
# 1. 定义变量
abc='abc'
ABC
_abc
a1

2. 使用变量

${abc}
echo $abc

3. 只读变量:将变量a1变为只读

readonly a1

4. 删除变量:删除变量ABC

unset ABC
```

2. 变量类型

  1. 局部变量:仅在当前shell实例中有效
  2. 环境变量:所有的程序,包括shell启动的程序都能访问环境变量;必要时shell脚本可以自定义环境变量
  3. 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 变量

posted @ 2022-08-24 15:27  二越  阅读(50)  评论(0)    收藏  举报