第一章、终端打印、算术运算、常用变量

前端之家收集整理的这篇文章主要介绍了第一章、终端打印、算术运算、常用变量前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

第一章、终端打印、算术运算、常用变量

1、终端打印

echo

@H_301_6@[root@ceshi ~]# echo hello world hello world [root@ceshi ~]# echo 'hello world' hello world [root@ceshi ~]# echo "hello world" hello world

printf

@H_301_6@[root@ceshi ~]# printf "hello world\n" # n代表换行 hello world @H_301_6@[root@ceshi ~]# vi info.sh #!/bin/bash printf "%-5s %-10s %-4s\n" Num Name Mark printf "%-5s %-10s %-4d\n" 1 aa 90 printf "%-5s %-10s %-4.2f\n" 1 bbb 80.1234 printf "%-5s %-10s %-4.3f\n" 1 ccccc 60.1234 %-5s 表示格式为左对齐,且宽度为5的字符串代替(-表示左对齐),不使用-则是右对齐(s表示字符串) %d 代表十进制整数 %-4.3f 表示格式为左对齐宽度为4,'.3'代表保留3位小数,f代表浮点数 [root@ceshi ~]# /bin/bash info.sh Num Name Mark 1 aa 90 1 bbb 80.12 1 ccccc 60.123

格式替代符号

  1. %b 代表对应的参数被视为有要被处理的转义序列之字符串
  2. %c ASCII字符。显示对应参数的第一个字符
  3. %d,%i 都代表十进制整数
  4. %e,%E,%f 代表浮点类型
  5. %g,%e或%f 转换,看哪一个较短,则删除结尾的零
  6. %G,%E或%F 转换,看哪一个较短,则删除结尾的零
  7. %o 不带正负号的八进制值
  8. %s 代表字符串类型
  9. %u 不带正负号的十进制
  10. %x 不带正负号的十六进制值,使用a-f表示10-15
  11. %X 不带正负号的十六进制值,使用A-F表示10-15
  12. %% 字面意义的%

转义序列

  1. \a 警告字符,通常为ASCII的bel字符
  2. \b 后退
  3. \c 抑制输出结果中任何结尾的换行字符(只在%b指示符参数中有效),而且,任何留在参数里的字符、任何接下来的参数以及任何留在格式字符串中的字符,都被忽略。
  4. \f 换页(英文formFeed
  5. \n 换行
  6. \r 回车(英文Carriage return)
  7. \t 水平制表符,(其实就是所在的行不换行了)
  8. \v 垂直制表符,
  9. \ 字面意义上的反斜杠
  10. \ddd 表示1-3位数八进制值的字符,仅在格式字符串中有效
  11. \0ddd 表示1-3位的八进制值字符

在echo中转义换行符包含

echo -e “包含转义序列的字符串”

-e :就可以识别出字符串里边的转义序列,不加e默认不识别转义序列

@H_301_6@[root@ceshi ~]# echo -e "你好\t你好\t" 你好 你好 [root@ceshi ~]# echo -e "你好\v你好\v" 你好 你好 # 不加-e 就没有识别转义序列 [root@ceshi ~]# echo "你好\t你好\t" 你好\t你好\t [root@ceshi ~]# echo "你好\v你好\v" 你好\v你好\v

打印彩色输出

@H_301_6@[root@ceshi ~]# echo -e "\033[5;31;42m你好\033[0m"

参考:http://www.jb51.cc/article/p-szaukbkl-up.html

2、算术运算

整数运算

let运算命令

@H_301_6@[root@ceshi ~]# vi let.sh #!/bin/bash num1=2 num2=3 let result=num1+num2 echo $result 运行: [root@ceshi ~]# /bin/bash let.sh 5
  1. 自加操作 let num1++

  2. 自减操作 let num1--

  3. 简写形式:let no+=10let ; let no-=20

    ​ 等同于:let no=no+10; let no=no-20

操作符[]运算方法

@H_301_6@[root@ceshi ~]# vi fangkuohao.sh #!/bin/bash num1=2 num2=3 result=$[$num1+num2] echo $result 运行: [root@ceshi ~]# /bin/bash fangkuohao.sh 5

注:使用方法和let相似,在[]中可以使用$前缀

(())运算方法

@H_301_6@[root@ceshi ~]# vi xiaokuohao.sh #!/bin/bash n1=2 n2=3 result=$((n1+n2)) echo $result

expr运算方法

@H_301_6@[root@ceshi ~]# expr 2 + 3 5 [root@ceshi ~]# num1=5 [root@ceshi ~]# r=$(expr $num1 + 5) [root@ceshi ~]# echo $num1 5 [root@ceshi ~]# echo $r 10

expr的常用运算符

  • +
  • -
  • *
  • /
  • % 取模运算,也叫取余

精密计算

高级运算工具:bc

它可以执行浮点运算和一些高级函数

@H_301_6@[root@ceshi ~]# echo "1.25*3" | bc 3.75

设定小数精度(也就是小数点显示几位)

scale=2 代表小数点显示2位

@H_301_6@[root@ceshi ~]# echo "scale=2;7/3" | bc 2.33

进制转换

@H_301_6@十进制转二进制: [root@ceshi ~]# a=192 [root@ceshi ~]# echo "obase=2;$a" |bc 11000000 二进制转十进制: [root@ceshi ~]# b=11000000 [root@ceshi ~]# echo "obase=10;ibase=2;$b"|bc 192

计算平方和平方根

@H_301_6@求2的三次方: [root@ceshi ~]# echo "2^3"|bc 8 求100的平方根 [root@ceshi ~]# echo "sqrt(100)"|bc 10

3、常用变量

给变量赋值的不同方式

双引号"" 允许用过$符号引用其他变量值

单引号'' 禁止引用其他变量值,$视为普通字符

反撇号`` 将命令执行的记过输出给变量;如:

@H_301_6@sed -i s/"B"/"b"/g `grep -rl "B" --exclude="*.sql" ceshi/*` 将grep得到的文件传输给sed使用

用户自定义变量

设置变量的作用范围

格式:

export 变量名

export 变量名=变量值

清除变量名:

unset 变量名

@H_301_6@自定义变量 [root@ceshi ~]# export a #自定义变量a [root@ceshi ~]# export b=222 #自定义变量b [root@ceshi ~]# a=111 #给变量a赋值 [root@ceshi ~]# echo $a #打印变量a的值 111 [root@ceshi ~]# echo $b #打印变量b的值 222 清除变量: [root@ceshi ~]# unset a #清除变量a [root@ceshi ~]# unset b #清除变量b [root@ceshi ~]# echo $a #输出为空 [root@ceshi ~]# echo $b

环境变量

环境变量配置文件

查看环境变量:

set 命令可以查看所有的shell变量,其中包括环境变量

常见的环境变量

  • $USER 查看当前用户
  • $logname 登录相关信息
  • $UID 当前用户的UID,root用户为0
  • $SHELL 打印当前用户的shell编辑器
  • $HOME 打印当前用户的主目录
  • $pwd 打印当前所在目录
  • $PATH 用户输入的命令在哪里目录中查找
  • $PS1
  • $PS2
  • $RANDOM 显示一个随机

位置变量

表示为:$n (n为1-9之间的数字)

@H_301_6@#./test.sh one two three four five six
  • $0 表示文件名本身

  • $1 表示one

  • $2 表示two

    依次类推

预定义变量

  1. $# 命令行中位置参数的个数
  2. $* 所有位置参数的内容
  3. $? 上一条命令执行后返回的状态,为0表示成功,为非0表示执行异常或出错
  4. $$ 当前所在进程的进程号
  5. $! 后台运行的最后一个进程号
  6. $0 当前执行的进程/程序名

猜你在找的Bash相关文章