传参@bash

众志成城

介绍

流动的数据是程序的肉体。

位置参数

执行shell程序时,shell会自动将第一个参数保存在特殊的shell变量1中,并依次将后面参数保存到后面的变量上。这些特殊变量由于基于命令行所在的位置而命名为“位置参数”。

位置参数是在shell完成正常的命令行处理之后(I/O重定向,变量替换,文件名替换)被赋值的。
注意:当提供给程序的参数多于9个时,没法直接访问到第10个及以后的参数的,必须使用格式${n};否则如$10会被解析为第一个变量后加上字符0

之外,命令shift可以左移位置参数。

特殊变量

除了位置参数为,特殊shell变量$#包含了命令行中输入的参数个数;变量$*引用的是传给程序的所有参数。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$ cat tshift
echo $# $*
shift
echo $# $*
shift
echo $# $*
shift
echo $# $*
shift
echo $# $*
shift

$ chmod +x ./tshift
$ ./tshift a b c d e
5 a b c d e
4 b c d e
3 c d e
2 d e
1 e

参考资料

UNIX/Linux/OS X中的Shell编程@ISBN: 9787115470416:https://book.douban.com/subject/30410589/

0%