当前位置:首页 » 终端打印、算术运算、常用变量
终端打印、算术运算、常用变量
#!
称为 shebang
cmd1 ; cmd2
执行cmd1后在执行cmd2
终端打印
echo
echo hello world echo 'hello world' echo "hello world"
bash不会对单引号内变量(如$var
)求值。
printf
printf "hello world"
#!/bin/bash printf "%-5s %-10s %-4s\n" NO Name Mark printf "%-5s %-10s %-4.2f\n" 01 Tom 90.3456 printf "%-5s %-10s %-4.2f\n" 02 Jack 89.2345 printf "%-5s %-10s %-4.2f\n" 03 Jeff 98.4323
- %-5s 格式为左对齐且宽度为5的字符串代替(-表示左对齐),不使用则是又对齐。
- %-4.2f 格式为左对齐宽度为4,保留两位小数。
格式替代符
- %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 "包含转义序列的字符串"
echo -e "1\t2\t3" 1 2 3
打印彩色输出
文字色
echo -e "\e[1;31mThis is red text\e[0m"
This is red text
- \e[1;31m 将颜色设置为红色
- \e[0m 将颜色重新置回
颜色码:重置=0,黑色=30,红色=31,绿色=32,黄色=33,蓝色=34,洋红=35,青色=36,白色=37
背景色
echo -e "\e[1;42mGreed Background\e[0m"
Greed Background
颜色码:重置=0,黑色=40,红色=41,绿色=42,黄色=43,蓝色=44,洋红=45,青色=46,白色=47
文字闪动
echo -e "\033[37;31;5mMySQL Server Stop...\033[39;49;0m"
红色数字处还有其他数字参数:0 关闭所有属性、1 设置高亮度(加粗)、4 下划线、5 闪烁、7 反显、8 消隐
算术运算
整数运算
let运算命令
#!/bin/bash no1=2; no2=3; let result=no1+no2 echo $result
- 自加操作
let no++
- 自减操作
let no--
- 简写形式
let no+=10let no-=20
分别等同于let no=no+10let no=no-20
操作符[]运算方法
#!/bin/bash no1=2; no2=3; result=$[$no1+no2] echo $result
使用方法和let相似,在[]
中可以使$
前缀。
(())运算方法
#!/bin/bash no1=2; no2=3; result=$((no1+no2)) echo $result
expr运算方法
result=`expr 2 + 3` result=$(expr $no1 + 5)
expr的常用运算符
- 加法运算:+
- 减法运算:-
- 乘法运算:\*
- 除法运算:/
- 求摸(取余)运算:%
精密计算
算术操作高级运算工具:bc,它可以执行浮点运算和一些高级函数
echo "1.212*3" | bc 3.636
设定小数精度(数值范围)
echo "scale=2;3/8" | bc 0.37
参数scale=2是将bc输出结果的小数位设置为2位。
进制转换
#!/bin/bash abc=192 echo "obase=2;$abc" | bc
执行结果为:11000000,这是用bc将十进制转换成二进制。
#!/bin/bash abc=11000000 echo "obase=10;ibase=2;$abc" | bc
执行结果为:192,这是用bc将二进制转换为十进制。
计算平方和平方根
echo "10^10" | bc echo "sqrt(100)" | bc
常用变量
结合不同的引导为变量赋值
- 双引号 "" :允许通过$符号引用其他变量值
- 单引号 '' :禁止引用其他变量值,$视为普通字符
- 反撇号 `` :将命令执行的结果输出给变量
用户自定义变量
设置变量的作用范围
格式:
export 变量名...
export 变量名=变量值 [...变量名n=变量值n]
清除用户自定义变量
格式:
unset 变量名
环境变量
环境变量配置文件
- 全局配置文件:/etc/profile
- 用户配置文件:~/.bash_profile
查看环境变量
常见的环境变量
- $USER 查看账户信息
- $logname 登录相关信息
- $UID
- $Shell
- $HOME 家目录
- $pwd
- $PATH 用户所输入的命令是在哪些目录中查找
- $PS1
- $PS2
- $RANDOM 随机数
位置变量
表示为:$n (n为1~9之间的数字)
#./test.sh one two three four five six
- $0 表示文件名本身
- one就是:$1
- two就是:$2
预定义变量
- $# :命令行中位置参数的个数
- $* :所有位置参数的内容
- $? :上一条命令执行后返回的状态,当返回状态值为0时表示执行正常,非0表示执行异常或出错
- $$ :当前所在进程的进程号
- $! :后台运行的最后一个进程号
- $0 :当前执行的进程/程序名