Linux 3 用户输入

处理输入

  命令行参数:添加在命令行后的数据

  命令行选项:修改命令行行为的单个字母

  从键盘读取输入

位置参数

  位置参数:位置参数是标准的数字:$0 是程序名,$1是第一个参数...依次类推,知道第9个参数:$9

  如果位置参数超过10个,就需要在数字上加上{};${10},${11}...这样就可以向脚本添加任意多命令行参数。

  1 位置参数少于9个可以直接使用($1 美元符号加数字的直接组合取命令行中的位置参数,以空格隔开)

  

 

  2 超过9个需要使用${12}:美元符号加{数字}这样的组合获取位置参数

 

 

 位置参数可以多但是不能少,当第11个位置参数不存在是将发生错误。

 

 

 

  

 

 

执行脚本是时,先根据脚本的$0获取脚本文件名称,然后根据脚本名称判断走哪个分支,处理后打印结果。

 

测试参数

  在上面的位置参数超过10个的例子中,第11个位置参数不输入的话,脚本运行报错;

  这样的脚本设计是存在缺陷的:在使用参数前,最好检查参数中是否存在数据。

  

 

 

特殊参数

  $# 统计命令行中输入的参数个数

  最后一个命令行参数变量${$#} 并不能这样写,而应该这样写${!#};  并且$#值为0时,${$#}变量会返回命令行用到的脚本名

 

 

  $* : 将命令行上提供的所有参数当作一个单词保存。这个单词包含了命令行中出现的每一个参数值。

  $@:将命令行上提供的所有的参数当作同一个字符串中的多个独立的单词。

 

 

   通过例子可以清楚的看到,$*变量会将所有参数当单个参数,而$@变量会单独处理每个参数。

移动变量

  使用shift 命令时,默认情况下它会将每个参数变量向左一定一个位置(变量$1的值会被删除,也就是程序名不会改变)

 

 

也可以使用shift 2 每一次向左移动2个位置参数。

 

参考:

  《Linux命令行与shell脚本编程大全》Richard Blum, Christine Bresnahan

 

posted @ 2021-09-12 22:34  甲壳虫~~~  阅读(70)  评论(0)    收藏  举报