$? #判断上一条命令执行的是否成功,成功返回0,上一条命令不成功返回非0的数字
$0 #返回脚本的文件名称 $1-$9 返回对应的参数值 $* 返回所有的参数值是什么 $# 返回参数的个数和
调用变量的话 $或者a 或者 ${a}
常见的几个符号
>会覆盖原有的内容
>>不会覆盖原有的内容
; #执行多条命令
|
#管道符
&&
#前面的命令执行成功,后面的才可以执行
|| #前面的命令执行失败,后面的才可以执行
"" #会输出变量值
'
' #输出本身
`` #输出命令结果eg:a=`date`;echo $a
2>/dev/null #错误输出到无底洞
1>/dev/null #正确输出到无底洞
加:expr 12 + 6
expr $a + $b
echo $[12 + 6]
echo $[a + b]
echo $((12 + 6)) echo
$((a + b))
减:expr 12 - 6 expr
$a - $b echo $[12 - 6] echo $[a - b]
echo $((12 - 6)) echo $((a - b))乘:expr 12 \* 6
expr $a \* $b
echo $[a * b]
echo $((12 * 6))
echo $((a * b))
除:expr 12 / 6 expr
$a / $b echo $((12 / 6)) echo $((a / b))
echo $[12 / 6] echo $[a / b] 求余:expr
12 % 6 expr $a % $b echo $((12 % 6))
echo $((a % b)) echo $[12 % 6] echo $[a % b]
小数
bc计算器 保留多少位小数可以通过scale 但是scale只对除法,取余数,乘幂 有效,对加减没有效。
echo
"scale=2;(0.2+0.3)/1" | bc #计算出0.2+0.3的和并保留俩位小数,此时bc计算器会省略掉个位数的0
echo
"scale=2;(1.2+1.3)/1" | bc #计算出1.2+1.3的和并保留俩位小数
常见的条件判断
l 语法:[ 判断表达式]
----必须有空格
文件(夹)或者路径: -e 目标是否存在(exist)
-d 是否为路径(directory)
-f 是否为文件(file)
[ -e foer.sh ] || touch foer.sh
#判断当前目录下是否有foer.sh这个文件,假如没有就创建出foer.sh文件
l 权限:
-r 是否有读取权限(read)
-w 是否有写入权限(write)
-x 是否有执行权限(excute)
[ -x 123.txt ]
&& echo '有执行权限'
l 整数值(int型):
-eq 等于(equal)
-ne 不等于(not
equal) -gt 大于(greater than)
-lt 小于(lesser
than) -ge 大于或者等于(greater or
equal) -le 小于或者等于(lesser or
equal) [ 9 -gt 8 ] && echo '大于'
l 小数(浮点型):
[ `echo '1.2 < 1.3' |
bc` -eq 1 ] && echo '小于'
l 字符串:
= 相等!= 不相等
[ 'kkkkk' != 'kkkk' ]
&& echo '不等于'
#!/bin/bash
touch $1
if [ $? -eq
0 ]
then
echo
"$1 创建成功"
fi
shell脚本输入之read命令
l 语法:read -参数
-p:给出提示符。默认不支持"\n"换行
#!/bin/bash
read -p
"请输入密码:" pass
echo $pass
-s:隐藏输入的内容
带换行的
-t:给出等待的时间,超时会退出read
等待5秒
-n:限制读取字符的个数,触发到临界值会自动执行
处理海量数据之grep命令
grep应用场景:通常对数据进行
行的提取
l 语法:grep [选项]...[内容]...[file]
l
-v #对内容进行取反提取
-n #对提取的内容显示行号
-w #精确匹配
-i #忽略大小写
^ #匹配开头行首
-E #正则匹配
l cut应用场景:通常对数据进行列的提取
l 语法:cut [选项]...[file]
-d #指定分割符
-f #指定截取区域 -c #以字符为单位进行分割 注意:不加-d选项,默认为制表符,不是空格/bin/bash
#代表可以登录的用户 /sbin/nologin #代表不可以登录的用户 -d与-f:eg:以'|'为分隔符,截取出cut.txt的第一列跟第二列 cut -d '|' -f 1,2 cut.txt
eg:以'|'为分隔符,截取出cut.txt的第一列至第二列 cut -d '|' -f 1-2 cut.txt
eg:以'|'为分隔符,截取出cut.txt的第二列到最后一列 cut -d '|' -f 2- cut.txt
-c: eg:截取/etc/passwd文件从第二个字符到第三个字符
cut -c 2-3 cut.txt
eg:比如领导想叫你截取linux上面所有可登陆普通用户 grep '/bin/bash' /etc/passwd | cut -d ':' -f 1 | grep -v root