Bash 脚本编程

概述

  • Bash (GNU Bourne-Again Shell) 是许多Linux发行版的默认Shell。

shell语法

变量

  • 定义:your_name="hellohhy"
  • 使用:echo $your_name
  • 删除:unset your_name

echo命令

echo命令

重定向

  • command > file:将输出重定向到 file。
  • command < file:将输入重定向到 file。
  • command >> file:将输出以追加的方式重定向到 file。
  • n > file:将文件描述符为 n 的文件重定向到 file。
  • n >> file:将文件描述符为 n 的文件以追加的方式重定向到 file。
  • n >& m:将输出文件 m 和 n 合并。
  • n <& m:将输入文件 m 和 n 合并。
  • 有人问道,g++编译结果怎么输出到文件。
  • 这里使用g++ test.cpp -o test 2> compile.txt来将其输出到文件。

管道

  • 这是一个或多个命令的序列,用字符|分隔。
  • 一个完整的管道格式是这样的:
[time [-p]] [ ! ] command [ | command2 ... ]
  • time单独执行某一条命令非常容易理解,统计这个命令运行的时间,但管道这种多个命令的组合,他统计的是某一个命令的时间还是管道所有命令的时间呢?如果保留字 time 作为管道前缀,管道中止后将给出执行管道耗费的用户和系统时间。

  • 如果保留字!作为管道前缀,管道的退出状态将是最后一个命令的退出状态的逻辑非值。 否则,管道的退出状态就是最后一个命令的。 shell 在返回退出状态值之前,等待管道中的所有命令返回。

  • 举一常见例子,比如查找名为firefox的进程:

ps -A | grep firefox

for 语句

for循环的格式为

for name [ in word ] ;
do
	list ;
done

其中循环格式可以为

  • {1..100..2}: 1到100增量为2
  • {a..z}: a到z的字母
  • seq 1 2 100: 1到100增量为2

或者可以使用类似c++的语法,

for (( i = 1 ; i <= n ; i++ )) ;
do
    list ;
done

while 语句

while循环的格式为

cnt=0
while [ $cnt -lt 10]
do
    echo "$cnt"
    let cnt+=1
done

其中,-lt的意思为less than,即<=

了解更多

原文地址:https://www.cnblogs.com/hellohhy/p/13215320.html