shell 主要指 shell 脚本,通常有两种方式运行:
shell 运行方式
1.作为可执行程序
保存为 helloworld.sh,并 cd 到相应目录:
- chmod +x ./helloworld.sh #使脚本具有执行权限
- ./helloworld.sh #执行脚本
2.作为解释器参数
直接运行解释器,其参数就是 shell 脚本的文件名
shell 字符串
获取字符串长度
- string="helloworld"
- echo ${#string} #输出 10
提取子字符串
以下实例从字符串第 2 个字符开始截取 4 个字符:
- string="helloworld"
- echo ${string:1:4} # 输出 ello
查找子字符串
查找字符 “i 或 s” 的位置:
- string="helloworld is a begining"
- echo `expr index "$string" is` # 输出 12
-
- #### 注释
- shell 只有单行注释,用 # 标识
shell 数组
主要是一维数组
赋值
- array_name=(value0 value1 value2 value3)
取值
- valuen=${array_name[n]}
使用@符号可以获取数组中的所有元素,例如:
- echo ${array_name[@]}
shell 传递参数
为脚本设置可执行权限,并执行脚本,输出结果如下所示:
脚本 helloworld.sh
- echo "Shell 传递参数实例!";
- echo "执行的文件名:$0";
- echo "第一个参数为:$1";
- echo "第二个参数为:$2";
- echo "第三个参数为:$3";
执行
- $ chmod +x helloworld.sh # 赋予执行权限
- $ ./helloworld.sh 1 2 3
结果
- Shell 传递参数实例!
- 执行的文件名:./test.sh
- 第一个参数为:1
- 第二个参数为:2
- 第三个参数为:3
shell 运算符
支持常用的运算符,但是原生 bash 不支持简单的数学运算,可以通过其他命令来实现,例如 awk 和 expr,expr 最常用
- #!/bin/bash
- val1 = `expr 2 + 2` # 这里是 反引号,表达式和运算符之间要有空格,例如 2+2 是不对的,必须写成 2 + 2
- a=10
- b=20
- val2 = `expr $a \* $b` # 乘法必须反斜杠,其他的不用
- echo "两数之和为 : $val1"
- echo "两数之积为 : $val2"
shell 打印
- printf "%-10s %-8s %-4s\n" 姓名 性别 体重kg
- printf "%-10s %-8s %-4.2f\n" 郭靖 男 66.1234
- printf "%-10s %-8s %-4.2f\n" 杨过 男 48.6543
- printf "%-10s %-8s %-4.2f\n" 郭芙 女 47.9876
打印出来的
条件语句
sh的流程控制不可为空,所以 else 语句里面不能为空
@H_301_233@函数