定义变量 不加 $ 符号 定义之后调用时 加 $ 符号
加{}是为了帮助解释器识别变量的边界,例如 "${qkx}name" 不加的话 $搞不懂是qkx还是qkxname.
定义只读变量 readonly eg. qkx = 'ssss' > readonly qkx
删除变量 unset
shell中 三种变量
局部变量 : 在脚本或命令中定义,仅在当前shell实例中有效。
环境变量 : 所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。
shell变量 : shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量。
单引号 双引号
单引号里面的内容都会原样输出
双引号中可以引用变量 和 转义符
获取字符串长度:{# str} string="abcd" > echo ${#string} 输出 4
提取子字符串 : string = 'abcdef' > ${string:1:4} > 返回bcde 即相当于左闭右闭 索引从0开始
查找子字符串位置 : string = 'abcdef' > echo `expr index "$string" c` > 返回(3)
shell只支持一维数组 array = (value0,value1,value2..)
读取数组: ${array[n]} n为下标
获取数组中所有元素 ${array[@]}
获取数组的长度 : ${# array[@]} 或者 ${# array[*]}
shell注释: 以#开头
多行注释:
:<<EOF
注释内容...
注释内容...
注释内容...
EOF (EOF在这里可为任意的符号)
shell 传递参数 $0表示带路径的文件名 $1就指第一个参数 $#显示参数的个数
$@ S*都是显示所有参数 但二者有所不同
假设在脚本运行时写了三个参数 1、2、3,则 " * " 等价于 "1 2 3"(传递了一个参数),而 "@" 等价于 "1" "2" "3"(传递了三个参数)。
shell 运算
数学运算符
关系运算符
布尔运算符
逻辑运算符
字符串运算符
文件测试运算符
见 https://www.runoob.com/linux/linux-shell-basic-operators.html
echo命令 用于字符串的输出
显示换行 / 不换行 (使用时前面都要加上 -e 开启转义)
echo -e "ok \n"
echo "fine"
上面的返回
ok
fine
不换行
echo -e "ok \c"
echo "fine"
上面的返回 ok fine
将结果定向至文件: echo "qkx" > myfile
显示命令执行的结果 加 反引号(前后都要加) 例如 echo
date` 返回当前日期
printf同样用于输出 有很多的参数 具体见 https://www.runoob.com/linux/linux-shell-printf.html
test命令用于检测某个条件是否成立 可用于数字 字符 文字 三方面的测试
具体见 https://www.runoob.com/linux/linux-shell-test.html
定时运行shell脚本
参考
https://blog.csdn.net/liao392781/article/details/79278811?utm_medium=distribute.pc_relevant.none