Shell特殊变量(Shell $#、$*、$@、$?、$$)的使用

Shell特殊变量的使用攻略

Shell特殊变量是一些预定义的变量,用于在Shell脚本中获取一些特定的信息。在本攻略中,我们将详细讲解Shell特殊变量$#$*$@$?$$的使用方法,并提供示例说明。

1. $# - 命令行参数个数

$#用于获取命令行参数的个数。它返回一个整数值,表示传递给脚本或函数的参数个数。

示例:

假设我们有一个名为script.sh的Shell脚本,内容如下:

#!/bin/bash

echo \"参数个数为: $#\"

我们可以在命令行中执行以下命令:

$ bash script.sh apple banana orange

输出结果将是:

参数个数为: 3

2. $* - 所有命令行参数的列表

$*用于获取所有命令行参数的列表。它将所有参数作为一个单词字符串返回。

示例:

继续使用上面的script.sh脚本,我们可以修改它的内容如下:

#!/bin/bash

echo \"所有参数为: $*\"

再次执行以下命令:

$ bash script.sh apple banana orange

输出结果将是:

所有参数为: apple banana orange

3. $@ - 所有命令行参数的列表(带引号)

$@$*类似,也用于获取所有命令行参数的列表。不同之处在于,$@将每个参数作为一个独立的字符串返回,并用引号括起来。

示例:

继续使用上面的script.sh脚本,我们可以再次修改它的内容如下:

#!/bin/bash

echo \"所有参数为: $@\"

再次执行以下命令:

$ bash script.sh apple banana orange

输出结果将是:

所有参数为: apple banana orange

4. $? - 上一个命令的退出状态

$?用于获取上一个命令的退出状态。退出状态是一个整数值,表示上一个命令的执行结果。

示例:

假设我们有一个名为script.sh的Shell脚本,内容如下:

#!/bin/bash

ls non_existent_file.txt
echo \"上一个命令的退出状态为: $?\"

我们可以在命令行中执行以下命令:

$ bash script.sh

输出结果将是:

ls: cannot access 'non_existent_file.txt': No such file or directory
上一个命令的退出状态为: 2

5. $$ - 当前Shell进程的进程ID

$$用于获取当前Shell进程的进程ID(PID)。PID是一个整数值,用于唯一标识一个进程。

示例:

假设我们有一个名为script.sh的Shell脚本,内容如下:

#!/bin/bash

echo \"当前Shell进程的进程ID为: $$\"

我们可以在命令行中执行以下命令:

$ bash script.sh

输出结果将是:

当前Shell进程的进程ID为: 12345

以上就是Shell特殊变量$#$*$@$?$$的使用攻略,希望对你有所帮助!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Shell特殊变量(Shell $#、$*、$@、$?、$$)的使用 - Python技术站

(0)
上一篇 2023年8月9日
下一篇 2023年8月9日

相关文章

  • C++学习心得之扫雷游戏

    C++学习心得之扫雷游戏攻略 1. 前言 扫雷游戏是一个经典的Windows游戏,通过排除地图上的安全方块并标记地雷方块,来完成游戏。对于初学者来说,实现一个扫雷游戏是学习C++编程的好方法,因为它涉及到了C++中很多重要的概念,例如面向对象编程、游戏逻辑和图形用户界面等。 在本文中,我们将使用MFC框架来实现扫雷游戏,并介绍实现的基本思路和关键步骤。 2.…

    other 2023年6月27日
    00
  • 查看linux之mysql是否安装的几种方法

    当然,我很乐意为您提供有关“查看Linux中MySQL是否安装的几种方法”的完整攻略。以下是详细的步骤和两个示例: 1. 什么是MySQL? MySQL是一种流行的开源关系型数据库管理系统,广泛用于Web应用程序的开发和管理。在Linux中,MySQL可以通过软件包管理器进行安装。 2. 查看MySQL是否安装 以下是两种查看Linux中MySQL是否安装的…

    other 2023年5月6日
    00
  • Android drawFunctor 原理及应用详情

    Android drawFunctor原理及应用详情 什么是drawFunctor drawFunctor是Android系统提供的一个机制,用于在渲染过程中保存、执行一些绘制操作。drawFunctor的核心是一个函数指针,该指针指向一个可以被执行的函数或方法,这个函数或方法封装了初始绘制数据和重绘时更新数据的操作。 drawFunctor的应用 draw…

    other 2023年6月26日
    00
  • Java经验点滴:类注释文档编写方法

    下面就为你详细讲解“Java经验点滴: 类注释文档编写方法”的完整攻略。 什么是类注释文档 类注释文档是指Java中的注释文档,在程序开发过程中,正确编写注释不仅可以对代码进行说明,更可以生成类似于API文档的格式化文档,方便项目组其他成员或使用者参考。 类注释文档编写方法总结 常规标签 在编写类注释文档时,你可以使用 Javadoc 风格的标签。下面是一些…

    other 2023年6月27日
    00
  • VUE递归树形实现多级列表

    下面是“VUE递归树形实现多级列表”的完整攻略。 1. 理解递归树形结构 递归树形结构,是指一个树形结构中包含了许多子树,而每个子树中又可能包含有更多的子树,这样的结构就可以使用递归来描述。 2. 实现递归组件 在 Vue 中实现递归树形结构,需要定义一个递归组件。递归组件是指在组件的模板中再次使用相同的组件,从而形成递归结构。 假设我们要实现一个无限级列表…

    other 2023年6月27日
    00
  • iOS 11.2.5下载:苹果iOS 11.2.5正式版官方固件下载地址分享

    iOS 11.2.5下载攻略 苹果iOS 11.2.5是一款重要的操作系统更新,它带来了一些新功能和修复了一些问题。如果你想下载并安装iOS 11.2.5正式版官方固件,下面是一个详细的攻略。 步骤一:备份设备 在开始下载和安装iOS 11.2.5之前,强烈建议你备份你的设备。这样,如果在更新过程中出现问题,你可以恢复到之前的状态。你可以使用iCloud或i…

    other 2023年8月4日
    00
  • Java String初始化String域例题解析

    Java String初始化String域例题解析 本文主要讲解Java中String初始化String域的相关知识点,通过两个示例来深入理解。 知识点 在Java中,String类型是不可变类,即一旦创建了字符串对象,其值就不能被更改。因此,在初始化String域时,需要注意以下几点: 直接初始化 可以通过直接为String对象赋值的方式进行初始化。例如:…

    other 2023年6月20日
    00
  • 玩转smartqq之登录

    以下是关于“玩转smartqq之登录”的完整攻略,包括登录过程、示例说明等。 1. 登录过程 smartqq是一款基于WebQQ协议的第三方QQ客户端,可以在Linux、Mac OS X、Windows等多个平台上使用。以下是smartqq登录的完整攻略: 获取二维码:打开smartqq客户端,点击“登录”按钮,获取二维码。 扫描二维码:使用手机QQ或其他支…

    other 2023年5月7日
    00
合作推广
合作推广
分享本页
返回顶部