字符集

作者: 慕知 | 来源:发表于2020-12-22 13:10 被阅读0次
1,算数运算符
  • 1)整数运算
# 整数运算
expr
$(())
$[]
let


[root@m01~]# let a++
[root@m01~]# echo $a
2

[root@m01~]# a=1
[root@m01~]# b=2
[root@m01~]# expr $a + $b
3
[root@m01~]# expr $(( a + b ))
3
[root@m01~]# expr $[ a + b ]
3
[root@m01~]# expr $[ $a + $b ]
3


注意:
乘法*有特殊意义,使用需要加上\

[root@m01~]# expr 2 * 6
expr: 语法错误

[root@m01~]# expr 2 \* 6
12

[root@m01~]# expr $(( a * b ))
6

  • 2)浮点运算
#浮点运算
bc

[root@m01~]# yum install -y bc

# scale=3,保留3位小数点,当分子小于分母,值的0会省略
[root@m01~]# echo "scale=3;4/30" | bc
.133

[root@m01~]# echo "scale=3;4/2" | bc
2.000



------------------应用场景---------------

[root@m01~]# free
              total        used        free      shared  buff/cache   available
Mem:         995896      116276      785456       25016       94164      735600
Swap:       1048572        1544     1047028

#取值
[root@m01~]# free | awk 'NR==2{print $NF}'
735184
[root@m01~]# free | awk 'NR==2{print $2}'
995896

#赋值
[root@m01~]# total=`free | awk 'NR==2{print $2}'`

[root@m01~]# availble=`free | awk 'NR==2{print $NF}'`

#计算
[root@m01~]# echo "scale=2;$available / $total" | bc
.74
2,测试运算符
  • 1)文件测试
test 等同于 [ ]    ###注意 [ ] 里面字符旁加空格

# 测试目录是否存在
[root@m01~]# test -d /etc/; echo $?
0

#测试文件长度是否大于0
[root@m01~]# [ -s a.jz ];echo $?
0

#测试文件是否有执行权限  (可换成w或r权限测试)
[root@m01~]# [ -x a.jz ];echo $?
1


#测试文件是否是软连接
[root@m01~]# [ -L a.jz ];echo $?
1


[root@m01~]# man test
查看更多测试参数
  • 2.1)字符串测试
# 查看字符串数量是否大于0

[root@m01~]# a=""
[root@m01~]# b="xy"

[root@m01~]# [ -n "$a" ];echo $?
1
[root@m01~]# [ -n "$b" ];echo $?
0

##    查看字符串数量是否为0   如上




# 查看字符串值是否相等
[root@m01~]# [ "asd" = "ssss" ];echo $?
1
[root@m01~]# [ "asd" = "asd" ];echo $?
0

##    != 查看字符串是否不想等;如上



# 并且关系

[root@m01~]# read -p "输入用户名:" name
输入用户名:zx
[root@m01~]# read -p "输入密码:" pwd
输入密码:123

[root@m01~]# [ "$name" = "zx" ] && [ "$pwd" = "123" ];echo $?
0
[root@m01~]# [ "$name" = "zx" -a "$pwd" = "111" ];echo $?
1

# 或者关系
[root@m01~]# [ "$name" = "zx" -o "$pwd" = "111" ];echo $?
0
[root@m01~]# [ "$name" = "zx" ] || [ "$pwd" = "123" ];echo $?
0



###字符串一定加上双引号!!!!!
  • 2.1)数字测试
[root@m01~]# [ "12" -eq "23" ];echo $?
1
[root@m01~]# [ "12" -lt "23" ];echo $?
0
[root@m01~]# [ "12" -ge "23" ];echo $?
1
[root@m01~]# [ "12" -ne "23" ];echo $?
0



# -eq 等于
# -gt 大于
# -ge 大于等于
# -lt 小于
# -le 小于等于
# ne 不等于


# 并且关系
[root@m01~]# [ "12" -gt "2" -a "6" -eq "6" ];echo $?
0
[root@m01~]# [ "12" -gt "2" ] && [ "6" -eq "6" ];echo $?
0


# 或者关系
[root@m01~]# [ "12" -gt "2" ] || [ "6" -eq "7" ];echo $?
0
[root@m01~]# [ "12" -gt "2" -o "6" -eq "6" ];echo $?
0
3,关系运算符(c语言风格)
[root@m01~]# (( 10==4 ));echo $?
1
[root@m01~]# (( 10>=4 ));echo $?
0
[root@m01~]# (( 10>4 && 4==4 ));echo $?
0

不可以使用-a 或者-o

4,赋值运算符(c语言风格)
[root@m01~]# a=2
[root@m01~]# ((a-=3))
[root@m01~]# echo $a
-1
#备注: 固定格式为((a加减乘除=需要操作的数字))

[root@m01~]# ((a-=10))
[root@m01~]# echo $a
2

[root@m01~]# ((a*=10))
[root@m01~]# echo $a
20

#  %取余数
[root@m01~]# x=10
[root@m01~]# ((x%=3))
[root@m01~]# echo $x
1

5,补充[[ ]]
1, 一般用法
[root@m01~]# [[ "abc" = "scc" ]];echo $?
1

2, 正则表达式用法
[root@m01~]# echo $USER
root
[root@m01~]# [[ "$USER" =~ ^ro ]];echo $?
0

#正则表达式一定不要加引号


------- 使用场景---------

例1:

[root@m01~]# vim /script/zx.sh
#!/bin/bash
#参数只能是一个,不然会提示"只能输入一个参数" 
[ $# -ne 1 ] && echo "只能输入一个参数" && exit
#第一个参数必须是数字,不然会提示"只能输入数字" 
[[ ! $1 =~ ^[0-9]+(\.[0-9])?$ ]] && echo "只能输入数字" && exit
#符合以上条件,提示"okkkkk"
echo "okkkkk"

[root@m01~]# chmod +x /script/zx.sh
[root@m01~]# /script/zx.sh  2223  eeee
只能输入一个参数
[root@m01~]# /script/zx.sh   eeee
只能输入数字
[root@m01~]# /script/zx.sh  333
okkkkk
[root@m01~]# /script/zx.sh  44.2
okkkkk




例2:
[root@m01~]# vim /script/zz.sh
#!/bin/bash
[ $# -ne 2 ] && echo "必须输入两个参数" && exit
[[ ! $1 =~ ^[0-9]+$ ]] && echo "第一个参数必须是整数" && exit
[[ ! $2 =~ ^[0-9]+$ ]] && echo "第二个参数也要是整数" && exit
[ $1 -eq $2 ] && echo "值相等"
[ $1 -gt $2 ] && echo "第一个值大"
[ $1 -lt $2 ] && echo "第二个值大"


[root@m01~]# chmod +x /script/zz.sh

[root@m01~]# /script/zz.sh 11
必须输入两个参数
[root@m01~]# /script/zz.sh ee 33
第一个参数必须是数字
[root@m01~]# /script/zz.sh 11 rrr
第二个参数也要是数字
[root@m01~]# vim /script/zz.sh
[root@m01~]# /script/zz.sh 11 33
第二个值大
[root@m01~]# /script/zz.sh 11 1
第一个值大

  • 字符补充
1,&& 优先级大于 || , 先执行两边的&& 再执行||

root@m01~]# ((8>6)) && ((9<10)) || ((1>0)) && ((4==3))
[root@m01~]# echo $?
1
[root@m01~]# ((8>6)) && ((9<10)) || ((1>0)) && ((4>3))
[root@m01~]# echo $?
0




2,[^0-9] 与 [!1-9] 都是取反的意思
[root@m01~/ab]# ls
1.txt  4.txt  7.txt  aa.txt  a.txt

[root@m01~/ab]# ls [^0-9].txt
a.txt
[root@m01~/ab]# ls [!0-9].txt
a.txt


3, &放在脚本最后,&前面的内容加上( ),代表放在后台执行,执行效率快
[root@m01~]# vim /script/11.sh
#!/bin/bash
(ping -c1 10.0.0.7 &> /dev/null
[ $? -eq 0 ] && echo "10.0.0.7 is ok" || echo "10.0.0.7 is down" ) &
(ping -c1 10.0.0.8 &> /dev/null
[ $? -eq 0 ] && echo "10.0.0.8 is ok" || echo "10.0.0.8 is down" ) 

[root@m01~]# chmod +x /script/11.sh
[root@m01~]# /script/11.sh
10.0.0.8 is ok
10.0.0.7 is ok





4.
control +z  把任务放在后台执行
jobs查看后台任务
fg +%n后台任务调到前台执行

[root@m01~]# ping 10.0.0.7
PING 10.0.0.7 (10.0.0.7) 56(84) bytes of data.
64 bytes from 10.0.0.7: icmp_seq=1 ttl=64 time=0.439 ms
64 bytes from 10.0.0.7: icmp_seq=2 ttl=64 time=0.642 ms
64 bytes from 10.0.0.7: icmp_seq=3 ttl=64 time=0.573 ms
^Z
[1]+  已停止               ping 10.0.0.7

[root@m01~]# jobs
[1]+  已停止               ping 10.0.0.7
[root@m01~]# fg %1
ping 10.0.0.7
64 bytes from 10.0.0.7: icmp_seq=3 ttl=64 time=0.299 ms
64 bytes from 10.0.0.7: icmp_seq=4 ttl=64 time=0.681 ms
... ...

相关文章

  • 2019-04-16字符集 通配符

    修改字符集 永久修改字符集 重启xshell 原因 与远程工具不同字符集 排错 查看xshll字符集查看系统字符集...

  • 字符集与校对规则

    MySQL字符集及校对规则的理解 阅读目录:MySQL的字符集和校对规则 MySQL的字符集 MySQL与字符集 ...

  • MYSQL 8 基本操作之03 (字符集)

    查询服务器字符集 查询服务器字符集校对规则 查询数据库字符集 查询数据库字符集校对规则 查询表的字符集及校对规则

  • 字符集和字符编码

    常常会把字符集和字符编码混起来。下面是一些常用的字符集:ASCII字符集GB2312字符集GBK字符集GB1803...

  • MySQL字符类型学习笔记

    @[toc] 一、字符集和字符编码 1.1、字符集 字符集:字符集就是字符的集合,例如GB2312是中国国家标准的...

  • tr

    转换字符集或者删除字符集 通常与输出命令搭配管道使用 将文本的输入内容中的小写字符集转换成大写字符集 删除指定的字符集

  • MySQL学习 6 字符集

    Mysql 的字符集设置非常灵活,可以设置: - 服务器默认字符集 - 数据库默认字符集 - 表默认字符集 - 列...

  • 字符集

    定义 mysql 的字符集包括 字符集 CHARACTER 和 校对规则COLLATION 两个概念 字符集 : ...

  • Unicode字符集与MYSQL数据库中的字符集

    全文内容概述 字符集是什么?有哪些常见的字符集?字符集的发展和历史知识 Unicode字符集的由来和特点 MYSQ...

  • Mysql 中文乱码问题

    从以下几方面排查: 数据库字符集 表字符集 连接字符集: useUnicode=true&characterEnc...

网友评论

      本文标题:字符集

      本文链接:https://www.haomeiwen.com/subject/cghsnktx.html