Shell 传递参数
我新建了一个文件,在说参数传递之前我们需要学习下for循环的基本语法:语法如下所示:
for var in var1 var2 var3 var4
do
#具体代码
done
实例代码如下:
#! /bin/bash
for var in 0 1 2 3 4 5 6 7 8 9
do
echo $var
done
打印结果如下:
[root@VM_0_11_centos days01]# ./shellfor.sh 1 2 3 4 5
0
1
2
3
4
5
6
7
8
9
第二个实例代码:获取/home文件夹下的所有的以 .bash开头的文件:
#! /bin/bash
for file in $home/.bash*
do
echo $file
done
结果如下:
/root/.bash_history
/root/.bash_logout
/root/.bash_profile
/root/.bashrc
进入今天的正题,参数传递:
我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n。n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推……
代码示例如下:($0表示可执行文件的名称)
#! /bin/bash
echo "可执行脚本的文件名为:$0"
echo "向shell脚本传递的第1个参数为:$1"
echo "向shell脚本传递的第2个参数为:$2"
echo "向shell脚本传递的第3个参数为:$3"
echo "向shell脚本传递的第4个参数为:$4"
运行及其结果如下:
[root@VM_0_11_centos days01]# ./params.sh 1 2 3 4
可执行脚本的文件名为:./params.sh
向shell脚本传递的第1个参数为:1
向shell脚本传递的第2个参数为:2
向shell脚本传递的第3个参数为:3
向shell脚本传递的第4个参数为:4
一些重要的参数介绍
$# | 传递到脚本参数的个数 |
$* | 获取所有的参数,以一个单字符串的形式显示 |
$$ | 脚本运行的当前进程号ID |
$! | 后台运行的最后一个进程的ID |
$$ | 与$*相同,但是使用时加引号,并在引号中返回每个参数。 |
$- | 显示Shell使用的当前选项,与set命令功能相同。 |
$? | 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。 |
实例程序:
#! /bin/bash
echo "可执行脚本的文件名为:$0"
echo "向脚本传递参数的个数为:$#"
echo "向shell脚本传递的参数为:$*"
echo "脚本当前运行的进程的ID为:$$"
echo "后台程序运行的最后一个进程的id为:$!"
echo "与$*相同,但是使用时加引号,并在引号中返回每个参数:$@"
echo "程序正常:$?"
运行结果如下:
可执行脚本的文件名为:./params2.sh
向脚本传递参数的个数为:5
向shell脚本传递的参数为:1 2 3 4 5
脚本当前运行的进程的ID为:17967
后台程序运行的最后一个进程的id为:
与1 2 3 4 5相同,但是使用时加引号,并在引号中返回每个参数:1 2 3 4 5
程序正常:0