开了个新坑,学学shell
shell语法
如何书写一个shell脚本
shell脚本就是将完成一个任务的所有的命令按照执行的先后顺序,自上而下写入到一个文本文件中,然后给予执行权限。
命名:虽然linux下没有扩展名的概念,但是最好还是用.sh来结尾
格式:开头以#!这个特殊符号来组成。如#!/bin/bash指定该脚本是运行解析由/bin/bash来完成的
shell规范:以#为注释符,并且写脚本文档和说明
运行方法:
1,使用chmod修改权限后运行
2,使用解释环境来运行,如下图

shell中的特殊符号
~:家目录
-:上一层目录
!:执行历史命令
!!:执行上一个历史命令
(可以用history查看历史命令的序列号,!number即可执行对应的历史命令)
$:变量中取内容值
*:通配符,匹配所有
?:匹配除回车外的一个字符
;:一行中可以执行多条命令,中间用;来隔开
\:转义字符
`:在命令中执行命令
':单引号不解释变量
":双引号能解释变量

shell中的管道应用
管道:上一个输出作为下一个输入
比如grep
重定向
echo hello > ./test
但是每次用>输入都会更新原本的文件内容
要是想要追加文件内容,就要用>>
echo hello >> ./test
数学运算
expr来做数学运算

tip:$?可以判断上一条命令是否执行成功,如果为0表示成功,如果非0表示不成功
let 也可以
let a=1+1
echo $a
以上两个都只能用整数运算
如何用于浮点数?
scale=2 表示计算结果采用两位小数点
那么我们可以选择管道符来做
echo "`echo "scale=2;100/3"|bc`%"
双圆括号也可以来做运算
echo $((1+2))
格式化输出
echo
命令选项:
-n 不要自动换行
-e 若字符串中出现以下字符,则特别处理,而不会将它当成文本输出
转义字符:
\a发出警告声
\b删除前一个字符
\c最后不加上换行符号
等等
shell的输入
read
小例子,用户名和登陆
#!/bin/zsh
echo -n "Please login: "
read login
echo -n "Please input password: "
read password
echo "Your login: $login"
echo "Your pass: $password"
不显示密码,和超时