shell编程-位置参数和特殊变量
位置参数和特殊变量
首先我们先来聊聊 C/C++的命令行参数一遍大家理解shell的位置参数和特殊变量
int main(int argc, char* argv[])
1.argc表示参数的个数 比如 ./a.out do some asldkfj
这样的话 argc == 3 把 可执行文件 ./a.out 也包含进来了
2.argv表示一个 指针数组 ,数组中的每个元素都是一个指针,每一指针又是 一个 字符串的首地址
这样的话 argv[0] == "./a.out ", argv[1] == "do some" , argv[2] == "asldkfj" 好 这里理解的话 我们接下来就开始讨论shell的位置参数和特殊变量
在shell编程中
$0 表示 C/C++ main函数 argv[0]
$1 $2 ..... 表示 main函数的 argv[1], argv[2].......
$# 表示main 函数的 argc-1 如果放在上面这个例子的话 就是 2
#@ 表示除$0 之外的 参数列表 "$1", "$2"........例如可以在for循环中 的 in后面加这个
#* 表示除$0 之外的 参数列表 "$1", "$2"........ 同上
#? 表示上一条命令(执行命令的进程)的 结束状态 (int类型)=》return 0;
$$ 表示当前的进程号
另外!!!位置参数可以用 shift命令左移,比如 shift3 表示 原来的$4 变成现在的 $1 , 原来的$5 变成$2 等等。
这样原来的$1 $2 $3 丢弃 , $0不懂, 不带参数的 shift相当于 shift 1例如:
demo
效果:
更多的shell编程我会在下面的文章中陆续的分享,也可以关注‘奇牛学院’
来一起讨论