Shell脚本操作-4

2020-06-01  本文已影响0人  做个合格的大厂程序员

管道

有时候我们需要一个命令的输出作为另一个命令的输入就得用到管道

语法结构

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计算器识别哪些类型

  1. 数字:整数,浮点数
  2. 变量:简单的变量数组
  3. 注释,表达式,函数等

开始计算直接在控制台输入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
上一篇下一篇

猜你喜欢

热点阅读