想说点什么呢?
之前一直没有深入学习Linux shell脚本的编写,现如今越来越对Linux shell产生依赖,所以说要开始学习了,希望在之后的日子里,要坚持不懈的对技术进行钻研,希望五年之后,还能常常回顾现如今写的博客
脚本常见变量
变量肯定是学脚本第一个要学的东西,脚本中一些默认的变量我们是需要了解的
名称 | 含义 |
---|---|
$0 | 获取shell脚本文件名,以及脚本路径 |
$n | 获取shell脚本的第n个参数,n在1~9之间,如大于9则需要写,$[10] |
$# | 获取执行的shell脚本后面的参数的总个数 |
$* | 获取shell脚本所有参数,不加引号等同于$@作用,加上引号“$*”作用是接收所有参数为单个字符串,“$1 $2 $3” |
$@ | 不加引号,效果同上,加引号,是接收所有参数为独立字符串。如"$1" “$2” “$3” … |
特殊状态变量
名称 | 含义 |
---|---|
$? | 上一次命令执行状态返回值,0正确,非0失败 |
$$ | 当时shell脚本的进程号 |
$! | 上一次后台进程的PID |
$_ | 在此之前执行的命令,最后一个参数 |
第一个脚本
该脚本主要是判断命令是否成功执行
#!/bin/bash
eval $@ #eval可以执行变量本身的命令
if [ $? -eq 0 ]; #判断命令执行成功与否,返回0就是成功,返回非0就是失败
then
echo "$CMD executed successfully"
else
echo "$CMD terminated unsuccessfully"
fi
[root@localhost opt]# ./success_test.sh 'ls'
rh success_test.sh test1.sh upload ZGQcPxHeQyum8QJt-wxZ4g
executed successfully
将一个命令的输出发送给另一个命令
Linux shell 脚本最棒的特性之一就是可以轻松地将多个命令组合起来生成输出
命令输入通常来自于 stdin 或参数,输出可以发送给 stdout 或 stderr,当我们组合多个命令时,通常将 stdin 用于输入,stdout 用于输出
$ cmd1|cmd2|cmd3
这里组合三个命令。cmd1的输出传递给cmd2,cmd2的传出传递给cmd3,最终的输出(来自cmd3)会出现在显示器中或被导入某个文件