第一章终端打印算术运算常用变量
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第一章终端打印算术运算常用变量相关的知识,希望对你有一定的参考价值。
第一章、终端打印、算术运算、常用变量1、终端打印
echo
[[email protected] ~]# echo hello world
hello world
[[email protected] ~]# echo ‘hello world‘
hello world
[[email protected] ~]# echo "hello world"
hello world
printf
[[email protected] ~]# printf "hello world\n" # n代表换行
hello world
[[email protected] ~]# 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代表浮点数
[[email protected] ~]# /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默认不识别转义序列
[[email protected] ~]# echo -e "你好\t你好\t"
你好 你好
[[email protected] ~]# echo -e "你好\v你好\v"
你好
你好
# 不加-e 就没有识别转义序列
[[email protected] ~]# echo "你好\t你好\t"
你好\t你好\t
[[email protected] ~]# echo "你好\v你好\v"
你好\v你好\v
打印彩色输出
[[email protected] ~]# echo -e "\033[5;31;42m你好\033[0m"
参考:http://blog.51cto.com/506554897/1932861
2、算术运算
整数运算
let运算命令
[[email protected] ~]# vi let.sh
#!/bin/bash
num1=2
num2=3
let result=num1+num2
echo $result
运行:
[[email protected] ~]# /bin/bash let.sh
5
-
自加操作 let num1++
-
自减操作 let num1--
-
简写形式:let no+=10let ; let no-=20
? 等同于:let no=no+10; let no=no-20
?
操作符[]运算方法
[[email protected] ~]# vi fangkuohao.sh
#!/bin/bash
num1=2
num2=3
result=$[$num1+num2]
echo $result
运行:
[[email protected] ~]# /bin/bash fangkuohao.sh
5
注:使用方法和let相似,在[]中可以使用$前缀
(())运算方法
[[email protected] ~]# vi xiaokuohao.sh
#!/bin/bash
n1=2
n2=3
result=$((n1+n2))
echo $result
expr运算方法
[[email protected] ~]# expr 2 + 3
5
[[email protected] ~]# num1=5
[[email protected] ~]# r=$(expr $num1 + 5)
[[email protected] ~]# echo $num1
5
[[email protected] ~]# echo $r
10
expr的常用运算符
- +
- -
- *
- /
- % 取模运算,也叫取余
精密计算
高级运算工具:bc
它可以执行浮点运算和一些高级函数
[[email protected] ~]# echo "1.25*3" | bc
3.75
设定小数精度(也就是小数点显示几位)
scale=2 代表小数点显示2位
[[email protected] ~]# echo "scale=2;7/3" | bc
2.33
进制转换
十进制转二进制:
[[email protected] ~]# a=192
[[email protected] ~]# echo "obase=2;$a" |bc
11000000
二进制转十进制:
[[email protected] ~]# b=11000000
[[email protected] ~]# echo "obase=10;ibase=2;$b"|bc
192
计算平方和平方根
求2的三次方:
[[email protected] ~]# echo "2^3"|bc
8
求100的平方根
[[email protected] ~]# echo "sqrt(100)"|bc
10
3、常用变量
给变量赋值的不同方式
双引号"" 允许用过$符号引用其他变量值
单引号‘‘ 禁止引用其他变量值,$视为普通字符
反撇号`` 将命令执行的记过输出给变量;如:
sed -i s/"B"/"b"/g `grep -rl "B" --exclude="*.sql" ceshi/*` 将grep得到的文件传输给sed使用
用户自定义变量
设置变量的作用范围
格式:
export 变量名
export 变量名=变量值
清除变量名:
unset 变量名
自定义变量
[[email protected] ~]# export a #自定义变量a
[[email protected] ~]# export b=222 #自定义变量b
[[email protected] ~]# a=111 #给变量a赋值
[[email protected] ~]# echo $a #打印变量a的值
111
[[email protected] ~]# echo $b #打印变量b的值
222
清除变量:
[[email protected] ~]# unset a #清除变量a
[[email protected] ~]# unset b #清除变量b
[[email protected] ~]# echo $a #输出为空
[[email protected] ~]# echo $b
环境变量
环境变量配置文件
-
全局配置文件:/etc/profile
-
用户配置文件:~/.bash_profile
?
查看环境变量:
set 命令可以查看所有的shell变量,其中包括环境变量
常见的环境变量
- $USER 查看和用户信息
- $logname 登录相关信息
- $UID
- $Shell
- $HOME
- $pwd
- $PATH 用户输入的命令在哪里目录中查找
- $PS1
- $PS2
- $RANDOM 随机数
位置变量
表示为:$n (n为1-9之间的数字)
#./test.sh one two three four five six
-
$0 表示文件名本身
-
$1 表示one
-
$2 表示two
依次类推
预定义变量
- $# 命令行中位置参数的个数
- $* 所有位置参数的内容
- $? 上一条命令执行后返回的状态,为0表示成功,为非0表示执行异常或出错
- $$ 当前所在进程的进程号
- $! 后台运行的最后一个进程号
- $0 当前执行的进程/程序名
以上是关于第一章终端打印算术运算常用变量的主要内容,如果未能解决你的问题,请参考以下文章
获取 badarith,[erlang,'+',[error,0],[],同时使用 Erlang 片段在 TSUNG 中执行算术运算