第4章 处理用户输入与显示数据------------(参数计数、获取所有数据)
2017-03-14 00:00
525 查看
4.1.4 参数计数
可以不必测试每个参数,而只对命令行中输入的参数个数进行计数。特殊变量$#中存储执行脚本时包含的命令行参数的个数。在脚本中的任意位置都可以使用这个特殊变量。这个变量($#)还提供了一个很酷的方法来获取命令行中的最后一个参数,使用这种方法不必知道使用的参数个数。当命令行中没有任何参数时,$#的值为零。${!#}变量返回最后一个命令行参数值,当命令行为空时,返回命令行中使用的脚本名称。
参数计数的实例如下:
#!/bin/bash #参数计数$#与${!#}的使用 para=$# case $para in 0) echo "${!#} $para";; 1) echo $1;; 2) echo $[ $1+$2 ];; 3) echo "$1 $2 $3";; *) echo "参数大于4个!";; esac
4.1.5 获取所有数据
有些情况下,会需要获取命令行中提供的所有参数,并对它们进行迭代。变量$*和$@都是在一个变量中包含所有命令行参数。变量$*将命令行中提供的所有参数作为一个单词处理。这个单词中包含出现在命令行中的每一个参数值。本质上,变量$*不是将参数视为多个对象,而是将它们看作一个参数。而另一方面,变量$@将命令行中提供的所有参数作为同一个字符串中的多个单词处理。允许对其中的值进行迭代,分隔开所提供的不同参数。通常使用for命令来进行迭代。 这要看相应的系统而定。PS:$*将所有的参数视为一个单词;$@将所有参数视为一个字符串。
在本机操作系统的获取所有数据实例:
#!/bin/bash #$*将所有的参数视为一个单词 #$@将说有的参数视为一个字符串 echo "使用\$*方法:$*" echo "使用\$@方法:$@" count=1 for par in $* do echo "\$*参数 #$count=$par" count=$[ $count+1 ] done count=1 for par in $@ do echo "\$@参数 #$count=$par" count=$[ $count+1 ] done
相关文章推荐
- 第4章 处理用户输入与显示数据------------(参数计数、获取所有数据)
- 第4章 处理用户输入与显示数据------------(参数计数、获取所有数据)
- 第4章 处理用户输入与显示数据------------(读取参数、读取程序名称、测试参数)
- 第4章 处理用户输入与显示数据------------(读取参数、读取程序名称、测试参数)
- 第4章 处理用户输入与显示数据------------(从键盘输入的命令read,对输入计时计数)
- 第4章 处理用户输入与显示数据------------(读取参数、读取程序名称、测试参数)
- 第4章 处理用户输入与显示数据------------(从键盘输入的命令read,对输入计时计数)
- 第4章 处理用户输入与显示数据------------(移位shift、命令行参数选项)
- 第4章 处理用户输入与显示数据------------(禁止命令输出、lsof命令、关闭文件描述符、创建读取/写入文件描述符)
- 第4章 处理用户输入与显示数据------------(创建本地临时文件、在/temp中创建临时文件、创建临时目录、tee命令)
- 第4章 处理用户输入与显示数据------------(禁止命令输出、lsof命令、关闭文件描述符、创建读取/写入文件描述符)
- 第4章 处理用户输入与显示数据------------(更高级的getopts命令、标准化选项)
- 第4章 处理用户输入与显示数据------------(更高级的getopts命令、标准化选项)
- 第4章 处理用户输入与显示数据------------(默读与文件读取)
- 第4章 处理用户输入与显示数据------------(移位shift、命令行参数选项)
- 第4章 处理用户输入与显示数据------------(getopt命令)
- 第4章 处理用户输入与显示数据------------(默读与文件读取)
- 第4章 处理用户输入与显示数据------------(getopt命令)
- 第4章 处理用户输入与显示数据------------(getopt命令)
- 第4章 处理用户输入与显示数据------------(创建本地临时文件、在/temp中创建临时文件、创建临时目录、tee命令)