美文网首页
【收获】shell编程中的几个知识点

【收获】shell编程中的几个知识点

作者: NoteCode | 来源:发表于2016-10-24 17:19 被阅读19次

shell很强大,shell很直接,shell很抽象

eval()

在.sh代码中可以直接写命令。但在执行过程中出错时,欲将出错的命令(比如下面这句)自己手动在command line执行一次,就得打开文件,找到那个命令,copy&paste到command line,执行。

...
grep -e 'pattern' -r some/path
...

这有点烦。所以,我倾向于将所执行的关键命令echo出来,以在出错时,即刻从console copy出来执行。那就需要eval()了。即:先将命令存成一个变量,然后就可以eval()该变量来执行命令(同时也可以echo出来)。如下:

...
cmd="grep -e 'pattern' -r some/path"
echo $cmd // 程序稳定了可以把这行注释掉
eval($cmd)
...

$()

此方法可以将本应输出到stdout的内容输出到变量,以为后续程序所用

result=$(echo "hello")
// 此时result内容即为"hello"

这个例子太简单,看起来$()没什么用,但在实际中很有用。比如:你要检查某个命令的输出内容中是否含有某个关键字。

result=$(grep -o -e 'pattern' -r some/path)
if [ $result = 'keyword'; ] then
   // ok, found
else
   // not found
fi

记住:输出到stdout只能给人眼看,输出到变量,才能被程序使用

2>&1

有时,你需要将shell程序执行输出的log写入文件(以备后续排查问题),你应该知道这样写:

sh some/shell.sh > path/to/log

但这会漏掉STDERR,而他们是你定位bug的重要线索,可不能丢掉。所以,下面的写法才是正解:

sh some/shell.sh > path/to/log 2>&1

>> vs. >

下面写法为“追加”(即不清空已有内容)

sh some/shell.sh >> path/to/log

下面写法则是先清空,再写

sh some/shell.sh > path/to/log

综述

跟其他高级脚本语言相比(比如python),shell编程的优势在于:

  1. 无需安装解释器
  2. 所用命令绝大部分是我们在command line天天用的,不生分
    可以说,门槛比较低。作为程序猿,应该学一下子。

相关文章

  • 【收获】shell编程中的几个知识点

    shell很强大,shell很直接,shell很抽象 eval() 在.sh代码中可以直接写命令。但在执行过程中出...

  • 用shell命令绘制三角形

    本文旨在通过几个经典的图案来练习shell编程,涉及知识点:for循环,大小比较,基本的数学公式计算,echo小技...

  • day28-2019年4月9日

    shell编程基础 1、为什么要学shell编程? linux系统中会大量得使用shell,工作中也需要...

  • shell 案例

    Shell编程一 Shell防范ARP攻击 Shell编程二 Shell防范DDos攻击 Shell编程三 ...

  • 作业-第07周--课堂-Day28-Shell与Shell编程相

    Day28 课堂作业 1. Shell与Shell编程相关 1.1 为什么要学习Shell编程? Linux系统中...

  • Shell编程基础知识

    关于shell编程基础: 1.为什么要学习shell编程? Linux系统中会大量的使用Shell,工作中我们也需...

  • day28-Shell编程3小时光速入门

    Shell编程3小时光速入门 1、为什么要学习shell编程? Linux系统中会大量的使用Shell,工作中我们...

  • Shell编程系列(三)-- 运算符

    前言 在上一篇文章Shell编程系列(二)-- Bash 变量中, 我们学习了Shell编程中的变量相关的知识。...

  • shell 第一天

    shell编程初识 1.1 shell编程初识 shell的定义 Shell 是命令解释器 Shell 也是...

  • 第十三、十四天

    学习内容:Linux shell、嵌入式Linux开发平台搭建收获: 初步掌握了shell脚本编程的各类语法以及执...

网友评论

      本文标题:【收获】shell编程中的几个知识点

      本文链接:https://www.haomeiwen.com/subject/leuluttx.html