【基本脚本编译------------(重定向输入输出与数学计算)】曾无好事来相访,赖尔高文一起予。这篇文章主要讲述基本脚本编译------------(重定向输入输出与数学计算)相关的知识,希望能为你提供帮助。
2.2 重定向输入输出与数学计算
bashshell提供了几种操作符,能够将命令的输出重定向到另一个位置,重定向既能用于输入也能用于输出,重定向一个文件到命令输入。
2.2.1 输出重定向
重定向的最基本类型是通过一条命令将输出发送到文件中。bash shell重定向为此使用大于号(>
)。相反,任何命令中应该显示在显示器上的内容都存储到一个指定的输出文件中。如果输出文件已经存在,那么重定向操作符就会用新的文件数据重写已经存在的文件。有时可能需要将命令的输出附加到现有文件,而不是重写此文件内容。例如,如果正在创建记录系统中活动的日志文件。在这种情况下,可以用两个大于号(>
>
)附加数据。
输出重定向操作实例如下所示:
2.2.2 输入重定向
输入重定向不是将命令的输出重定向到一个文件中,而是将一个文件的内容重定向一条命令中。输入重定向符号时小于号(<
)。命令总是位于在命令行的开始位置,重定向符号指向数据流动的方向。小于号表明数据从输入文件流向命令。
内置输入重定向符号时两个小于号(<
<
)。除了这个符号,还必须执行一个文本标记来说明输入数据的开始和结尾。文本标记可以使用任何字符串值,但是在数据的开始和结尾必须相同。在命令行中使用内置重定向时,shell会采用次提示来提示数据,次提示在PS2环境变量中定义。次提示会更多的数据继续提示直到输入文本标记。
输入重定向的操作实例:
wc命令对数据中的文本计数:文本的行数、文本的单词数、文本的字节数。
2.2.3 管道
有时需要将一个命令的输出发送至另一个命令的输入。使用重定向可以做到这一点,但有些笨拙。管道的符号时竖条操作符(|),管道传送链条命令以提供更详细的输出。管道传送的命令不是一个一个的运行的,而是同时运行的,并在系统内部把它们连接在一起。第一条命令生成输出时,输出就立即发送给第二条命令。没有使用中间文件或者缓冲区来传递数据。管道操作实例如下所示:
2.2.4 数学计算
expr命令允许处理命令行中的等式,但是很笨拙。expr命令能够区分一些不同的数学操作符和字符串操作符。
在脚本或命令行中使用标准操作符会出现问题,尽管expr命令中它们可以正常运行。shell中许多expr命令操作符(如*)有其他含义。要解决此问题,在传送给expr命令的字符可能被错误解析前,需要使用shell转义字符(\\)来识别它。为了把一个数学等式的结果复制给一个变量,必须使用字符反引号从expr命令中提取输出。
在bash中,为一个变量指定一个数学值时,可以用$符号和方括号($[operation])把数学等式括起来。使用括号是shell数学运算变得更简单。在bash shell脚本中计算数学等式有一个主要限制。bash shell的数学操作只支持整数算法。如果想做任何类型的实际的计算,这是一个很大的限制。使用方括号的操作实例如下所示:
#!/bin/bash
var1=12
var2=25
var3=`expr $var1+$var2`
var4=$[25+25]
var5=$[$var4*2]
echo var1:$var1
echo var2:$var2
echo var3:$var3
echo var4:$var4
echo var5:$var5
推荐阅读
- Java字节流和字符流详解
- #云原生征文#深入了解k8s的Pod
- 基本脚本编译------------(创建脚本与使用变量)
- tar命令参数列表说明
- 创建函数-----------(在函数中使用变量向函数传递参数在函数中处理变量关键字local)
- 数据驱动测试(DDT)与使用外部数据源
- 创建函数-----------(函数递归 创建库source命令)
- AC-DMIS 5.3RPS找正
- AC-DMIS 5.3 模型坐标系转换