第一章、终端打印、算术运算、常用变量
1、终端打印
echo
[root@ceshi ~]# echo hello world hello world [root@ceshi ~]# echo 'hello world' hello world [root@ceshi ~]# echo "hello world" hello world
printf
[root@ceshi ~]# printf "hello world\n" # n代表换行 hello world
[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
格式替代符号
- %b 代表对应的参数被视为有要被处理的转义序列之字符串
- %c ASCII字符。显示对应参数的第一个字符
- %d,%i 都代表十进制整数
- %e,%E,%f 代表浮点类型
- %g,%e或%f 转换,看哪一个较短,则删除结尾的零
- %G,%E或%F 转换,看哪一个较短,则删除结尾的零
- %o 不带正负号的八进制值
- %s 代表字符串类型
- %u 不带正负号的十进制
- %x 不带正负号的十六进制值,使用a-f表示10-15
- %X 不带正负号的十六进制值,使用A-F表示10-15
- %% 字面意义的%
转义序列
- \a 警告字符,通常为ASCII的bel字符
- \b 后退
- \c 抑制输出结果中任何结尾的换行字符(只在%b指示符参数中有效),而且,任何留在参数里的字符、任何接下来的参数以及任何留在格式字符串中的字符,都被忽略。
- \f 换页(英文formFeed)
- \n 换行
- \r 回车(英文Carriage return)
- \t 水平制表符,(其实就是所在的行不换行了)
- \v 垂直制表符,
- \ 字面意义上的反斜杠
- \ddd 表示1-3位数八进制值的字符,仅在格式字符串中有效
- \0ddd 表示1-3位的八进制值字符
在echo中转义换行符包含
echo -e “包含转义序列的字符串”
-e :就可以识别出字符串里边的转义序列,不加e默认不识别转义序列
[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
打印彩色输出
[root@ceshi ~]# echo -e "\033[5;31;42m你好\033[0m"
参考:http://www.jb51.cc/article/p-szaukbkl-up.html
2、算术运算
整数运算
let运算命令
[root@ceshi ~]# vi let.sh #!/bin/bash num1=2 num2=3 let result=num1+num2 echo $result 运行: [root@ceshi ~]# /bin/bash let.sh 5
-
自加操作 let num1++
-
自减操作 let num1--
-
简写形式:let no+=10let ; let no-=20
等同于:let no=no+10; let no=no-20
操作符[]运算方法
[root@ceshi ~]# vi fangkuohao.sh #!/bin/bash num1=2 num2=3 result=$[$num1+num2] echo $result 运行: [root@ceshi ~]# /bin/bash fangkuohao.sh 5
注:使用方法和let相似,在[]中可以使用$前缀
(())运算方法
[root@ceshi ~]# vi xiaokuohao.sh #!/bin/bash n1=2 n2=3 result=$((n1+n2)) echo $result
expr运算方法
[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
它可以执行浮点运算和一些高级函数
[root@ceshi ~]# echo "1.25*3" | bc 3.75
设定小数精度(也就是小数点显示几位)
scale=2 代表小数点显示2位
[root@ceshi ~]# echo "scale=2;7/3" | bc 2.33
进制转换
十进制转二进制: [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
计算平方和平方根
求2的三次方: [root@ceshi ~]# echo "2^3"|bc 8 求100的平方根 [root@ceshi ~]# echo "sqrt(100)"|bc 10
3、常用变量
给变量赋值的不同方式
双引号"" 允许用过$符号引用其他变量值
单引号'' 禁止引用其他变量值,$视为普通字符
反撇号`` 将命令执行的记过输出给变量;如:
sed -i s/"B"/"b"/g `grep -rl "B" --exclude="*.sql" ceshi/*` 将grep得到的文件传输给sed使用
用户自定义变量
设置变量的作用范围
格式:
export 变量名
export 变量名=变量值
清除变量名:
unset 变量名
自定义变量 [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之间的数字)
#./test.sh one two three four five six
-
$0 表示文件名本身
-
$1 表示one
-
$2 表示two
依次类推