-
Notifications
You must be signed in to change notification settings - Fork 0
shell
- #! 这个符号告诉系统用什么解释器来执行 shell 脚本。 通常是 #!/bin/bash
- 执行当前目录下的 xx.sh脚本, 使用命令 ./xx.sh,不可以使用 xx.sh。 因为xx.sh,系统会在PATH中查找,而不是当前目录
shell变量
1.变量定义不能有空格,不需要加$符号,例如:name="kongl"
2.使用一个变量时需要加$符号,花括号是可选的,加花括号是为了帮助解释器识别变量边界。
例如:
name="mstring"
echo
例如:
name="test_string"
name2="this is ${name} !" <=> name2="this is "$name" !" <=> name2='this is '$name' !'
echo name2 -- 输出为 this is test_string !
name3='this is ${name} !' -- 输出为 this is ${name} !
7.获取字符串长度:使用#,例如:
name="kong"
echo
1.数组用”括号“来表示,元素之间用“空格”符号分割开。起始索引为0,定义数组的一般形式例如:
arr=(11 33 44 666)
或
arr=(
11
33
44
666
)
也可以单独定义某个元素,索引必须大于等于0且没有上限,例如:
arr[999]=3
2.读取数组元素一般格式是 ${arr[index]},例如 value=${arr[0]}
3.使用@获取数组全部元素。例如 echo
shell注释 1.单行注释,在行开头使用#即可。 2.多行注释,例如以下形式,EOF可以为任何字符 :<<EOF ..注释内容 ..注释内容 ... EOF
1.在shell脚本中获取参数的格式为:$n, n代表一个数字,代表执行脚本的第n个参数,例如: 脚本内容: #!bin/bash name1=$1 name2=$2 echo $name1 echo $name2 控制台执行: sh ./xx.sh kong ling 输出: kong ling
2.$@表示所有的参数,$与$@相同,$#表示传递给脚本的参数个数 $ 与 $@ 区别: 相同点:都是引用所有参数。 不同点:只有在双引号中体现出来。假设在脚本运行时写了三个参数 1、2、3, 则 " * " 等价于 "1 2 3"(传递了一个参数),而 "@" 等价于 "1" "2" "3"(传递了三个参数)。
1.算数运算,使用expr,例如:
echo expr 2 + 2
--数字与运算符中间加空格
1.+、-、*、/、%、 使用形如 expr 1 + 1
的方式计算, *需要加转义字符\,例如expr 1 \* 2
。MAC中的expr可以用$((1 * 2))表示,*不需要转义字符。
2.赋值使用 a=$b的形式
3.相等==,不相等!= 使用如下形式: [ $a == $b ]
4.关系运算符,只支持数字,不支持字符串,除非字符串是数字。以下为关系运算符及其用法:
1.等于: -eq [ $a -eq $b ]
2.不等于: -ne [ $a -ne $b ]
3.小于: -lt [ $a -lt $b ]
4.大于 -gr [ $a -gr $b ]
5.大于等于 -ge [ $a -ge $b ]
6.小于等于 -le [ $a -le $b ]
5.布尔运算符,以下为布尔运算符及其用法:
1.非运算: ! !false 返回true
2.或运算 -o [ false -o true ] 返回true
3.与预算 -a [ false -a true ] 返回false
6.逻辑运算符,以下为逻辑运算符及其用法:
1.或运算 || false 返回true
2.与预算 && false && true 返回false
7.字符串运算符,以下为字符串运算符及其用法:
1.检测字符串是否相等 == [ $a == $b ]
2.检测字符串是否不相等 != [ $a != $b ]
3.检测字符串长度是否为0 -z [ -z $a ]
4.检测字符串长度是否不为0 -n [ -n $a ]
5.检测字符串是否为空 $ [ $a ]
8.文件测试运算符,以下为文件测试运算符:
1.检测文件是否为目录 -d [ -d $file ]
2.检测文件是否为普通文件(既不是目录,也不是设备文件) -f [ -f $file ]
3.检测文件是否可读 -r [ -r $file ]
4.检测文件是否可写 -w [ -w $file ]
5.检测文件是否可执行 -x [ -x $file ]
6.检测文件是否不为空 -s [ -s $file ]
7.检测文件是否存在 -e [ -e $flie ]
1.显示执行结果使是xxx
或"$(xxx)",
例如:
1.echo date
或者是 echo "${date}" -- 2020年 4月26日 星期日 15时03分52秒 CST
2.echo pwd
或者是 echo "${pwd}". -- /Users/kongling/Desktop/shell3.txt
2.换行或不换行显示
换行: echo "123123\n456456"
不换行:echo "123123\c456456"
3.将结果定向到文件:
echo "此内容写入文件test.txt" > test1.txt -- 将字符串写入到当前工作目录下的test1.txt文件中,若没有该文件则创建该文件。
1.printf不会像echo一样在末尾自动添加换行符,但是自己可以在字符串末尾添加\n。 2.printf基本语法:printf format-string [arguments...],例如: printf "格式字符串测试%d,%s,%.3f" -- 格式字符串测试1,sss,1.500
- vi/vim:vi/vim 文件名, 这个命令可以在当前目录下编辑文件,创建后 输入 i ,进入编辑模式, 编辑完成后,点击esc, 然后输入 :wq! ,可保存编辑并退出
- chmod:开启 .sh 脚本执行权限 可用 命令 chmod +x ./xxx.sh 。 符号意义 +增加, -减少, =唯一权限 。r读权限, w写权限,x执行权限。 也可用数字代替, r=4,w=2,x=1, chmod abd file, abc 分别代表u(用户),g(gruop),o(other)。 例如 chmod 777 test.sh 代表给所用人赋予 读写执行的权限