Linux下shell位置参数怎么用

发布时间:2022-01-26 17:25:04 作者:小新
来源:亿速云 阅读:591

这篇文章将为大家详细讲解有关Linux下shell位置参数怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

一、引言

  之前我们一直没有涉及程序接收和处理命令行选项以及参数的能力。本章节将讲述允许程序访问命令行内容的shell功能。

二、访问命令行

  shell提供了一组名为位置参数的变量,用于储存命令行中的关键字,这些变量分别命令为0~9。可以通过以下方法展示这些变量。

  1 #!/bin/bash
  2
  3 # posit-param: script to view command line parameters
  4
  5 echo "
  6 \$0 = $0
  7 \$1 = $1
  8 \$2 = $2
  9 \$3 = $3
 10 \$4 = $4
 11 \$5 = $5
 12 \$6 = $6
 13 \$7 = $7
 14 \$8 = $8
 15 \$9 = $9
 16 "

  这个简单的脚本展示了从变量9的值。在没有任何命令行参数的情形下执行此脚本结果如下所示:

Linux下shell位置参数怎么用

  即便没有提供任何实参,变量$0总是会储存有命令行显示的第一项数据,也就是所执行程序所在的路径名。现在让我们看看,看一下提供实参情形下的程序执行结果。

Linux下shell位置参数怎么用

  注意,使用参数扩展技术,用户实际可以获取多于9个的参数。为标明一个大于9的数字,将数字用大括号括起来,例如{11}, ${888}等。

三、确定实参的数目

  shell还提供了变量$#以给出命令行参数的数目。如下代码所示:

 #!/bin/bash
 
 # posit-param: script to view command line parameters
 
 echo "Number of arguments: $#"
 
 echo "
 \$0 = $0
 \$1 = $1
 \$2 = $2
 \$3 = $3
 \$4 = $4
 \$5 = $5
 \$6 = $6
 \$7 = $7
 \$8 = $8
 \$9 = $9
 "

  以上程序运行结果如下所示:

Linux下shell位置参数怎么用

四、shift——处理大量的实参

  但是如果给程序提供大量的实参会发生什么呢?如下所示:

Linux下shell位置参数怎么用

  在本例中,通配符“*”扩展为26个实参。怎么样才可以处理这么多参数呢?shell提供了一种略显笨拙的处理方法。每次执行shift命令后,所有参数的值均“下移一位”。实际上,通过shift命令我们就可以只处理一个参数(之外的一个参数,0值恒定)而完成全部程序任务。如下程序:

 #!/bin/bash
 
 # shift.sh: script to display all arguments
 
 count=1
 
 while [[ $# > 0 ]]; do
        echo "Argument $count = $1"
        count=$((count + 1))
        shift
 done

  每当执行一次shift命令时,变量的值就赋值给1,而的值则赋给变量2,依次类推。变量$#的值同时减去1。故以上代码的执行结果如下图所示:

Linux下shell位置参数怎么用

五、在shell函数中使用位置参数

  就像位置参数可用于向shell脚本传递参数一样,位置参数也可用于shell函数实参的传递,如以下脚本所示:

  1 file_info() {
  2     if [[ -e "$1" ]]; then
  3         echo "File Type:"
  4         file "$1"
  5         echo "File Status:"
  6         stat "$1"
  7     else
  8         echo "$FUNCNAME: usage: $FUNCNAME file" >&2
  9         return 1
 10     fi  
 11 }

  现在,如果一个包含了file_info函数的脚本以一个文件名为实参调用file_info,则此实参就被传递给file_info函数。

  在这样的条件下,我们就可以写出很多不仅普通脚本可使用,而且.bashrc文件也同样适用的有用的shell函数。

  此外,这里需要注意的是FUNCNAME的shell变量,shell自动更新FUNCNAME以追踪当前执行的shell函数。

关于“Linux下shell位置参数怎么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

推荐阅读:
  1. Shell特殊位置参数变量($0 $n $# $* $
  2. Linux shell环境下Zabbix Api有什么用

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

linux shell

上一篇:Linux系统中sshd服务的两种验证方式是什么

下一篇:@Transactional注解怎么用

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》