Bash 脚本编程
概述
- Bash (GNU Bourne-Again Shell) 是许多Linux发行版的默认Shell。
shell语法
变量
- 定义:
your_name="hellohhy"
- 使用:
echo $your_name
- 删除:
unset your_name
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
,即<=
。
了解更多
- 如果你想学习一些基础,你可以访问:
Shell 教程 - 如果你想了解更高深的的,访问
Bash 脚本编程的一些高级用法