echo
- 打印
变量
- readOnly 将变量变成只读变量
- unset 删除变量
- 单引号里的任何东西都会原样输出
- 双引号里的可以有变量 也可以进行转意 所以双引号比单引号好用
- ``这里面可以继续写命令
字符串 str
-
str :读取字符串的长度
- str:1:4 :截取字符串第1到4个
- 课外作业 :字符串的各种处理
数组
- 数组名=(值1 值2 ... 值n)
- array_name[0]=value0
- ${数组名[下标]}
- ${array_name[@]} 读取array中的所有元素
- 数组取长度的方式和字符串一样 也是在前面加上# 但是要注意取得是整个数组的长度 还是单个数组元素的长度
$0 $1 $2 $3
- $0为文件名 之后就是我执行这个脚本带的参数
- $# 传递到脚本的参数个数
- $* 直接显示所有当成1个参数打印的
- $@ 有几个参数 就打印几个参数
- $$ 脚本运行进程ID
运算 检查是否正确 用[]框起来 去if
- +-*/%= == != 和java一样 在Mac 中 $((表达式)) 就可以表示 expr
- 关系运算符 -eq -ne - gt (GREATER THAN) -lt - ge -le
- 逻辑运算符 || && -o -a
- 字符串运算符 -z -n = != [str]
- 文件运算符
- -f 文件是否存在
- -x -r -w 文件是否可执行
- -s 是否为空
- -e 目录(文件)是否存在
- -d 是否为目录
echo printf
- echo "It is a test" > myfile 显示结果定向至文件
- printf 主要是格式化用的 类似于C %s\n %-10s %4.2f
if else
if condition
then
command1
command2
...
commandN
elif condition2
then
command2
else
command
fifor var in item1 item2 ... itemN
do
command1
command2
...
commandN
donecase 值 in
模式1)
command1
command2
...
commandN
;;
模式2)
command1
command2
...
commandN
;;
esacbreak continue
函数
- func(){}
- 调用 func 返回结果使用 $?
- 传递参数
funWithParam(){
echo "第一个参数为 $1 !"
echo "第二个参数为 $2 !"
echo "第十个参数为 $10 !"
echo "第十个参数为 ${10} !"
echo "第十一个参数为 ${11} !"
echo "参数总数有 $# 个!"
echo "作为一个字符串输出所有参数 $* !"
}
funWithParam 1 2 3 4 5 6 7 8 9 34 73
重定向
输出到文件
- < 从文件输入
输出追加到文件
- << 输入追加到文件
引用外部脚本
- . filename source filename