管道
有时候我们需要一个命令的输出作为另一个命令的输入就得用到管道
语法结构
command1 | command2
command1
相当于自己
|
相当于通讯设备
command2
相当于对方
重定向
去操作文件的输入或者输出
(上一次末尾曾经讲过), 可以去翻看Shell脚本操作-3
末尾部分,这里就不做过多阐述。
"expr"命令深入研究
"+","-","*","/"等等.....
方式一:
a=1
b=2
c=`expr $a + $b`
echo "c的值是 $c"
方法二:
a=1
b=2
c=$(expr $a + $b)
echo "c的值是${c}"
方式三:
a=1
b=2
c=$[ $a + $b ]
echo "c的值是${c}"
操作符描述
Xnip2020-03-13_10-15-33
bash命令
bash计算器,实际上是一种编程语言,这个允许在命令中输入浮点数表达式,然后解释并且计算表达式,最后返回结果
bash计算器识别哪些类型
- 数字:整数,浮点数
- 变量:简单的变量数组
- 注释,表达式,函数等
开始计算直接在控制台输入bc然后输入计算数据即可
将bash运用在shell脚本中
语法结构:
表达式通过管道给bc进行输出
val=$(echo "option;expression" | bc)
val=$(echo " 1.56 * 100 " | bc)
echo "val的值:${val}"
关于复杂一点的计算
val=$(bc << FLAG
options
statements
expression
FG
)
FG
相当于标记值,起始的和结束的都要标记
脚本代码
val=$(bc << fg
val1=($a * $b)
val2=(val1 * $c)
val3=(val2 + $d)
val1 + val2 + val3
fg
)
echo "val的值:${val}"
外部文件操作
Shell语言将输入,输出,错误分成三种描述,也就是三种状态(0,1,2)
第一种:STDIN->标准输入->0->键盘输入
1) 采用cat接收一个非STDUB->文件输入,就是读取文件内容,输入到控制台
2)用cat
命令
第二种:STDOUT->标准输出->1->对应终端输出
1)ls -l
输出所有文件并且包含了权限
注意who命令是打印当前登录系统用户信息
who >> fileA.sh
who > fileA.sh
2)重定向错误 -> 输出到文件中
第三种:STUERR->标准错误->2
ls -al a.sh 2>err.sh
如果查不到a.sh的目录路径,就直接在err.sh中输入错误信息,相当于把错误的log直接输出到一个.sh中了
第四种:
结合多个文件使用
ls -al fileA fileB fileC 2 > err.sh
如果fileA,fileB存在则输出到控制台,fileC不存在则写入err.sh中
ls -al fileA fileB fileC 2 > err.sh 1> fileContent.sh
如果fileA,fileB存在则输入到fileContent.sh中,fileC不存在则写入err.sh中。
第五种:
错误和正确的信息都输出到同一个文件中
ls -al fileA fileB fileC &> fileContent.sh
临时重定向
fileA:
echo "hello wolrd">&2
echo "您好"
err.sh
.fileA.sh 2>error.sh
永久重定向
假设在fileA中
exec 1> fileContent.sh
echo "Hello world"
echo "你好"
exec 2> error.sh
echo "报错"
echo "这里是错误信息"
这样就在一个文件中向两个脚本文件输入信息了。
重定向输入
向文件内输入就用 <
符号
exec 0 < fileContent.sh
count = 1
while read line
do
echo "当前的行数:$count 读取内容:$line"
count=${$count + 1}
done
网友评论