Advertisement

Shell脚本中的一部分环境变量:$0, $? , $!, $$, $*, $# 和 $@

  •  5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:PDF


简介:
本文介绍了在Shell脚本编程中的关键环境变量,包括执行文件名($0)、上一命令退出状态($?)、后台进程ID($!)、当前Shell PID($$)以及参数传递相关的$*和$#。 在Shell脚本编程中,环境变量扮演着至关重要的角色,它们提供了与系统交互以及控制脚本行为的方法。这里我们将详细探讨几个特定的环境变量:`$0`, `$?`, `$!`, `$$`, `$*`, `$#`, 和 `$@`。 1. **`$0`**: 这个特殊的环境变量表示当前执行的Shell脚本段落件名,用于引用调用该脚本时的文件路径。例如,在一个名为test.sh的脚本中使用命令`echo scname:$0`会输出`.test.sh`。 2. **`$?`**: `$?` 保存了上一个命令执行后的退出状态或返回值,通常在Unix/Linux系统中,0表示成功,非零值代表错误。例如,在检查某个命令是否执行成功的场景下,可以使用 `echo $?` 来查看结果。 3. **`$$`**: `$/$$` 表示当前Shell进程的PID(进程ID)。当需要在脚本内部跟踪或控制子进程时非常有用。比如启动一个后台任务后,可以通过保存此时的 PID 以供后续操作使用。 4. **`$!`**: 存储的是最后一个后台命令执行后的PID。如果脚本中包含异步运行的任务,可以利用 `$!` 获取其PID以便于管理和监控。 5. **`$*` 和 `$@`**: 这两个变量用来表示传递给脚本的所有参数。 - 使用 `$*` 时,所有参数作为一个单独的字符串输出,并且每个参数间由空格分隔。例如:`arg1 arg2 arg3` - 使用 `$@` 则会将每一个参数分别作为独立的字符串显示出来,每个参数被双引号包围。如 `arg1 arg2 arg3` 6. **`$#`**: 返回传递给脚本的所有参数的数量。例如在执行 `.test.sh aa bb` 的情况下,使用命令 `echo number:$#` 输出的结果是 2。 了解并熟练掌握这些环境变量能够帮助编写出更复杂、健壮和灵活的Shell脚本程序。通过结合使用这些变量可以实现错误处理、日志记录以及条件判断等功能。

全部评论 (0)

还没有任何评论哟~
客服
客服
  • Shell:$0, $? , $!, $$, $*, $# $@
    优质
    本文介绍了在Shell脚本编程中的关键环境变量,包括执行文件名($0)、上一命令退出状态($?)、后台进程ID($!)、当前Shell PID($$)以及参数传递相关的$*和$#。 在Shell脚本编程中,环境变量扮演着至关重要的角色,它们提供了与系统交互以及控制脚本行为的方法。这里我们将详细探讨几个特定的环境变量:`$0`, `$?`, `$!`, `$$`, `$*`, `$#`, 和 `$@`。 1. **`$0`**: 这个特殊的环境变量表示当前执行的Shell脚本段落件名,用于引用调用该脚本时的文件路径。例如,在一个名为test.sh的脚本中使用命令`echo scname:$0`会输出`.test.sh`。 2. **`$?`**: `$?` 保存了上一个命令执行后的退出状态或返回值,通常在Unix/Linux系统中,0表示成功,非零值代表错误。例如,在检查某个命令是否执行成功的场景下,可以使用 `echo $?` 来查看结果。 3. **`$$`**: `$/$$` 表示当前Shell进程的PID(进程ID)。当需要在脚本内部跟踪或控制子进程时非常有用。比如启动一个后台任务后,可以通过保存此时的 PID 以供后续操作使用。 4. **`$!`**: 存储的是最后一个后台命令执行后的PID。如果脚本中包含异步运行的任务,可以利用 `$!` 获取其PID以便于管理和监控。 5. **`$*` 和 `$@`**: 这两个变量用来表示传递给脚本的所有参数。 - 使用 `$*` 时,所有参数作为一个单独的字符串输出,并且每个参数间由空格分隔。例如:`arg1 arg2 arg3` - 使用 `$@` 则会将每一个参数分别作为独立的字符串显示出来,每个参数被双引号包围。如 `arg1 arg2 arg3` 6. **`$#`**: 返回传递给脚本的所有参数的数量。例如在执行 `.test.sh aa bb` 的情况下,使用命令 `echo number:$#` 输出的结果是 2。 了解并熟练掌握这些环境变量能够帮助编写出更复杂、健壮和灵活的Shell脚本程序。通过结合使用这些变量可以实现错误处理、日志记录以及条件判断等功能。
  • Linux Shell教程第四:利用函数设置
    优质
    本教程是《Linux Shell脚本》系列的第四部分,重点讲解如何通过编写和使用函数来动态地设置与管理环境变量,提升Shell脚本的功能性和灵活性。 本段落主要介绍了Linux Shell脚本系列教程的第四部分:使用函数添加环境变量。文章首先对环境变量的相关知识进行了介绍,并提供了普通方式下添加环境变量的方法以及通过编写函数来实现更灵活地管理环境变量的具体示例。对于需要了解或学习这方面内容的朋友来说,这是一篇值得参考的文章。
  • LinuxShell.pdf
    优质
    《Linux环境及Shell脚本》是一份全面介绍如何在Linux系统中操作和编程的手册,深入讲解了Shell脚本编写技巧与实践应用。 Linux是一种广泛使用的类Unix操作系统,它基于POSIX和Single UNIX Specification标准,并由Linus Torvalds在1991年首次发布。作为一个操作系统的核心部分,Linux内核负责管理系统的资源、调度程序执行任务以及控制硬件设备的使用;而Shell则是用户与系统交互的主要界面——通过输入命令来请求操作,这些命令被解释并调用相应的应用程序以实现用户的意图。 在Linux环境中,Shell脚本是一种将一系列指令组合起来以便自动化任务处理的语言。它类似于Windows中的批处理文件,但更加灵活和强大。常见的Shell类型包括Bash、Ksh以及Csh等。 本段落档中提到的Linux命令及Shell脚本涵盖了用于管理和操作目录与文件的一些基础功能,并详细解释了它们的操作方式及其用途: 1. `ls`命令:列出当前工作目录下的所有内容,可以通过不同的参数来定制显示的结果。比如使用`-a`可以展示包括隐藏在内的全部文件;而通过`-l`则以长格式输出,提供更详细的文件信息如权限和所属者等。 2. `cd`命令:用于改变用户所在的默认工作目录。绝对路径(例如/home/user)或相对路径都可以作为参数使用,并且可以通过输入~来表示用户的主目录,用.代表当前所在位置而..则指向上一级的父级目录。 3. `pwd`命令:显示当前的工作目录全称。如果该目录是通过符号链接创建的话,则可以利用-P选项获取其真实的物理路径而非逻辑路径。 4. `mkdir`命令:用于创建新的子文件夹或多个层级结构的文件夹,使用参数`-p`可以让系统自动地递归建立所有必要的上层父级文件夹。同时还可以通过添加-m来指定新目录的具体权限设置。 5. `rmdir`命令:专门用来删除空的目录项;对于非空的情况,则需要借助于更强大的命令如`rm -rf directory_name`来进行强制性的递归删除操作。 6. `cp`命令:复制文件或整个目录。目标位置可以是新的路径,如果已有同名项目则会被覆盖掉。使用`-r`选项可实现对整个子目录树的复制工作。 7. `rm`命令:用于移除单个或者一整套文件与目录结构,默认情况下只能删除空的文件夹;但添加了-rf参数后,可以无提示地强制性删除包括非空在内的任何东西。 8. `mv`命令:既可以用来移动或重命名一个单独的文件/目录项,也可以类似cp那样进行整个子树级别的迁移操作。其语法和选项设置与cp有相似之处。 Shell脚本的关键在于能够灵活组合以上这些基本指令,并通过条件判断、循环等逻辑控制结构来实现复杂的任务自动化处理流程。编写时一般会选择像Bash这样的解释器环境,然后将代码保存为以.sh结尾的文本段落件形式。 例如一个简单的示例脚本可能如下所示: ```bash #!/bin/bash # 这是一个注释行 echo 开始执行脚本程序... pwd # 显示当前工作目录路径信息 ls -al # 详细列出所有包含隐藏在内的文件列表 mkdir newdir # 创建一个新的子目录项newdir cp file1 newdir/ # 将file1复制到新创建的目录中去 rm -rf newdir # 删除之前新建的那个空文件夹及其内容 echo 脚本执行结束... ``` 通常,要使Shell脚本能被执行需要为其添加相应的运行权限。这可以通过`chmod +x scriptname.sh`命令来实现。 此外还提到了使用`man [command]`可以查看特定Linux指令的手册页文档,这对于深入理解各种工具的用法十分有用。 总的来说,掌握好Linux命令行与Shell脚本编程技巧对于任何希望在基于此平台进行工作或开发的人来说都是必不可少的基础技能。
  • Inno Setup 修改
    优质
    本文档提供了使用 Inno Setup 创建修改环境变量安装脚本的详细指南和示例代码,帮助开发者轻松实现自定义设置。 《Inno Setup 改变环境变量脚本详解》 Inno Setup 是一款强大的 Windows 安装程序制作工具,它允许开发者自定义安装过程中的各种细节,包括修改系统环境变量。本段落将深入探讨如何利用 Inno Setup 脚本来实现环境变量的自动化管理,即在安装时自动添加环境变量,并在卸载时自动删除这些变量。 一、Inno Setup 简介 Inno Setup 是一个免费的安装制作软件,支持创建单文件安装包、多语言安装界面以及自解压文件。它的强大之处在于支持批处理和脚本语言,这使得我们可以编写自定义的安装逻辑,例如动态改变环境变量。 二、环境变量的重要性 环境变量是操作系统用来存储信息的变量,如路径、库位置等,它们对程序的运行至关重要。当一个应用程序需要依赖特定的环境配置时,修改环境变量就显得尤为重要。通过 Inno Setup ,我们可以方便地在用户安装软件时进行这些设置。 三、添加环境变量的脚本语法 在 Inno Setup 中,我们可以通过 [Code] 部分来编写 Pascal 脚本,实现环境变量的添加。以下是一个简单的示例: ```pascal [Code] function InitializeSetup(): Boolean; begin 添加环境变量 AddEnvironmentVariable(MyEnvVar, Value); Result := True; end; procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep); begin 卸载时删除环境变量 if CurUninstallStep = usPostUninstall then RemoveEnvironmentVariable(MyEnvVar); end; ``` 在 `InitializeSetup` 函数中,我们添加了一个名为 MyEnvVar 的环境变量,值为 Value。在 `CurUninstallStepChanged` 函数中,我们在卸载程序的最后阶段删除了这个环境变量。 四、脚本调试与优化 尽管上述代码提供了一个基本框架,但实际应用中可能需要根据具体需求进行调整。例如,你可能需要检查环境变量是否已经存在或者处理可能出现的错误。此外,为了确保脚本的稳定性和兼容性,应进行充分测试。 五、Inno Setup 脚本资源 为了帮助开发者更好地理解和使用 Inno Setup 脚本,可以参考官方文档和在线社区资源。例如,Inno Setup 的源代码包含了大量的示例脚本,可以作为学习和调试的参考资料。 六、总结 Inno Setup 的环境变量脚本功能使我们能够更灵活地控制安装过程,确保软件的正确安装和卸载。通过理解并熟练运用相关的 Pascal 脚本,我们可以实现定制化的环境变量管理,提高用户体验并确保软件顺利运行。
  • Java设置.bat
    优质
    Java环境变量设置脚本.bat 是一个用于Windows操作系统的批处理文件,旨在简化配置Java开发工具所需环境变量的过程,使用户能够轻松地在命令行中运行和管理Java应用程序。 记事本编辑,更改安装路径, 设置 `JAVA_HOME` 为你的安装路径。 以管理员权限运行。
  • Jenkins自动化Shell享(仅供Shell参考,不适用于其他自动署)
    优质
    本篇分享介绍如何使用Jenkins实现基于Shell脚本的自动化部署方案,旨在为开发者提供一个可供参考的脚本模板。请注意,该脚本专为特定环境设计,不具备通用性,直接应用到其它环境中可能无法正常工作。 Jenkins自动部署Shell脚本分享(仅用于Shell脚本分享,因环境不同,不可用于其它环境自动部署使用) ```bash #!/bin/bash # 时间:2019年7月29日 # 作者:肖山 # 用途:用于 XXXX UAT环境ATG商城项目Jenkins自动部署使用。 ############ 使用注意事项: ################################################################################## 注意1:需修改目标主机/etc/ssh/sshd_config,MaxSessions 50(建议值),重新加载sshd服务配置。 注意2:脚本后必须跟参数,参数为 项目名,例如:sh deploy.sh store 注意3:第50行,sleep 15 秒。20后台进程 x 15 秒=300秒,检测时间共300秒;如果某项目的tomcat启动时间超过300秒,则需要增大该数值。 ```
  • Hadoop伪布式Shell配置.zip
    优质
    该资源为Hadoop在单机环境下进行伪分布式部署的Shell脚本集合,适用于初学者快速搭建和测试Hadoop集群环境。包含启动、停止及配置相关命令。 在IT行业中,Hadoop是一个广泛使用的开源框架,用于处理和存储大规模数据。本段落介绍的shell脚本配置包包含了所有资源和指南来设置一个伪分布式环境所需的Hadoop。 1. **Hadoop-2.8.1**: 这是Hadoop的一个稳定版本,在2.x系列中。此版本提供诸如YARN(Yet Another Resource Negotiator)和HDFS(Hadoop Distributed File System)等核心服务,以及MapReduce计算框架来并行处理大数据。 2. **JDK-8u261-linux-x64**: Hadoop需要Java开发工具集(JDK),特别是Java 8。这里的版本是为Linux系统的64位系统设计的更新版,安装Hadoop前必须先具备这个环境。 3. **hadoop-env.sh**: 它设定如HADOOP_HOME、JAVA_HOME等关键路径,确保运行时能找到依赖的文件和库。 4. **core-site.xml**: 这个配置文件定义了HDFS的基本设置,包括默认副本数和IO参数。你可以用它来指定名称节点的位置。 5. **install_hadoop.sh**: 这是一个shell脚本用于自动化安装过程,通常会包含解压二进制文件、配置环境变量等步骤。 6. **hdfs-site.xml**: 它设置了如块大小、副本数和权限验证等HDFS特定参数。优化这些设置可以改善性能并增强安全性。 7. **install_jdk.sh**: 类似于`install_hadoop.sh`,此脚本用于安装JDK以确保系统具备运行Hadoop所需的Java环境。 8. **帮助文档.txt**: 提供了详细的步骤和指南来配置伪分布式环境。对于初学者来说非常有用的内容包括如何执行上述脚本、编辑配置文件以及启动停止服务等。 在设置Hadoop的伪分布式环境中,你需要: 1. 运行`install_jdk.sh`安装JDK。 2. 解压`hadoop-2.8.1.tar.gz`到你选择的位置,并更新环境变量如HADOOP_HOME和JAVA_HOME。 3. 使用脚本完成基本配置并运行它来设置Hadoop。 4. 编辑核心站点和HDFS的特定参数以适应你的需求。 5. 初始化命名空间,格式化NameNode。 6. 启动各种服务包括DataNode、NameNode及ResourceManager等。 通过文档中的指示验证环境是否成功搭建。掌握这些步骤是成为数据工程师或管理员的关键技能之一,并且在实际应用中可能需要根据具体环境调整配置以适应硬件资源和安全策略的特定需求。
  • 配置Windows批处理
    优质
    简介:本文档提供了一个用于自动配置Windows系统环境变量的批处理脚本示例。通过该脚本,用户能够便捷地更新或设置系统的PATH及其他重要环境变量值。 如何使用批处理文件(.bat)或Windows管理规范(WMI)来设置Windows环境变量。
  • Inno Setup 修改系统
    优质
    简介:本文提供了一个使用 Inno Setup 编写的脚本示例,用于在安装过程中修改目标系统的环境变量设置。 在制作安装程序的过程中,我需要设置系统环境变量path的值,并在网上找到了一段脚本进行测试。虽然该脚本能成功添加路径,但在卸载过程中无法移除已加入的路径。经过一番研究后,我发现原程序存在一些小错误并进行了修改,现在分享出来供大家使用。具体如何操作,在代码头部有详细的说明。