unix shell
1、#!/bin/bash
2、readonly可以将变量定义为只读变量
3、unset删除变量 unset variablename;变量被删除后不能再次使用;unsert不能删除只读变量
4、字符串可以用单引号或双引号,双引号可以使用变量,也可以用转义字符
5、获取字符串长度,在变量名前加#,即 ${#variablename}
6、支持一维数组,不支持多维数组
7、数组:用括号表示,用空格分隔开,读取数组 ${数组名[下标]},@可以获取数组所有元素 ${array_name[@]}, 获取数组长度 ${#array_name[@]}
8、向脚本传递参数,获取参数的形式为 $n
9、$* 与 $@ 区别:
- 相同点:都是引用所有参数。
- 不同点:只有在双引号中体现出来。假设在脚本运行时写了三个参数 1、2、3,,则 " * " 等价于 "1 2 3"(传递了一个参数),而 "@" 等价于 "1" "2" "3"(传递了三个参数
10、-n判断一个string不是Null值,string要用双引号;返回0为真,1为假;[ -n "$参数" ]
11、expr能完成表达式求值操作
12、布尔运算符: ! : 非; -o :或; -a: 与
13、-e 开启转义; \c表示不换行
14、使用printf的脚本移植性比echo好
15、%s , %c, %d ,%f 是格式替代符,表示字符串,字符,整型,实数(小数)
%-10s:表示一个宽度为10的字符,- 表示左对齐,没有即右对齐,任何字符都会被显示在10个宽度的字符内
%-4.2f:表示输出保留2个小数位的实数
16、test用于检查某个条件是否成立,可进行数值,字符,文件三方面测试
17、sh的流程控制语句不可为空
if condition then command1 command2 ... commandN else command fi
18、case ... esac 为多选择语句
echo '输入 1 到 4 之间的数字:' echo '你输入的数字为:' read aNum case $aNum in 1) echo '你选择了 1' ;; 2) echo '你选择了 2' ;; 3) echo '你选择了 3' ;; 4) echo '你选择了 4' ;; *) echo '你没有输入 1 到 4 之间的数字' ;; esac
19、continue命令与break命令类似,只有一点差别,它不会跳出所有循环,仅仅跳出当前循环
#!/bin/bash while : do echo -n "输入 1 到 5 之间的数字: " read aNum case $aNum in 1|2|3|4|5) echo "你输入的数字为 $aNum!" ;; *) echo "你输入的数字不是 1 到 5 之间的!" continue echo "游戏结束" ;; esac done
当输入数字大于5,循环不会结束,“游戏结束”不会被执行
20、函数定义
[ function ] funname [()] { action; [return int;] }
可以带function fun() ,也可以直接fun()不带参数;在函数内部,获取参数为$n
21、输出重定向 common1 > file1:表示将命令行输出内容覆盖到文件中;
common1 >> file1 :表示将命令行输出内容添加到文件后
22、输入重定向: common1 < file1 :本来需要从键盘输入的命令转移到文件中读取
23、引用外部脚本 . filename 表示引用文件,注意 . 与文件名中间有空格
24、
浙公网安备 33010602011771号