一、echo命令
1、在echo中转义换行符
默认情况下,echo会在输出文本的尾部追加一个换行符。可以使用选项-n来禁止这种行为。 echo同样接受双包含转义序列的双引号字符串作为参数。在使用转义序列时,需要使用echo -e "包含转义序列的字符串"这种形式
转义序列:
ANSI 转义序列是一种用于控制终端输出的色彩、样式、光标位置以及控制终端行为的特殊字节. 它的使用方式就是通过 stdout 在字符串、字节中向外输出**Control当终端支持此转义序列的功能时, 就会呈现出相应的效果. 此功能常常用于终端的彩色输出、构建 Text User Interface 应用等。(例如:换行符\n , 制表符\t , 彩色文本 \e[1;色彩码m 文本内容 \e[0m )
2、打印彩色输出
脚本可以使用转义序列在终端中生成彩色文本。
文本颜色是由对应的色彩码来描述的。其中包括:重置=0,黑色=30,红色=31,绿色=32, 黄色=33,蓝色=34,洋红=35,青色=36,白色=37。
要打印彩色文本,可输入如下命令:
其中\e[1;31m是一个转义字符串,可以将颜色设为红色,\e[0m将颜色重新置回。只需要将31替 换成想要的色彩码就可以了。
对于彩色背景,经常使用的颜色码是:重置=0,黑色=40,红色=41,绿色=42,黄色=43, 蓝色=44,洋红=45,青色=46,白色=47。
二、使用shell进行数学运算
Bash shell使用let、(( ))和[]执行基本的算术操作。工具expr和bc可以用来执行高级操作。
实战演练
(1) 可以像为变量分配字符串值那样为其分配数值。这些值会被相应的操作符视为数字。
#!/bin/bash no1=4; no2=5;
1.5 使用 shell 进行数学运算 13
(2) let命令可以直接执行基本的算术操作。当使用let时,变量名之前不需要再添加$,例如:
let result=no1+no2 echo $result
let命令的其他用法如下:
自加操作
$ let no1++
1 2 3
自减操作
$ let no1-- 4
简写形式 let no+=6
let no-=6
它们分别等同于let no=no+6和let no=no-6。 其他方法
5 6 7 8
10 11 12 14
操作符[]的使用方法和let命令一样:
result=$[ no1 + no2 ]
在[]中也可以使用$前缀,例如:
result=$[ $no1 + 5 ] 也可以使用操作符(())。出现在(())中的变量名之前需要加上$:
result=$(( no1 + 50 )) 9 expr同样可以用于基本算术操作:
result=`expr 3 + 4` result=$(expr $no1 + 5)
以上这些方法不支持浮点数,只能用于整数运算。
(3) bc是一个用于数学运算的高级实用工具,这个精密的计算器包含了大量的选项。我们可 以借助它执行浮点数运算并使用一些高级函数:
echo "4 * 0.56" | bc 2.24 no=54; result=`echo "$no * 1.5" | bc` echo $result
bc可以接受操作控制前缀。这些前缀之间使用分号分隔。
设定小数精度。在下面的例子中,参数scale=2将小数位个数设置为2。因此,bc将 会输出包含两个小数位的数值:
echo "scale=2;22/7" | bc 3.14
进制转换。用bc可以将一种进制系统转换为另一种。来看看下面的代码是如何在十进 制与二进制之间相互转换的:
#!/bin/bash
用途:数字转换
no=100 echo "obase=2;$no" | bc 1100100 no=1100100 echo "obase=10;ibase=2;$no" | bc 100
计算平方以及平方根。
echo "sqrt(100)" | bc #Square root
echo "10^10" | bc #Square