首页 > 系统相关 >Day5.2 Shell编程教程 - 特殊变量表达式参数

Day5.2 Shell编程教程 - 特殊变量表达式参数

时间:2023-07-28 11:22:51浏览次数:37  
标签:脚本 Shell 变量 示例 编程 参数 Day5.2 表达式

1. 特殊变量表达式参数`$0``$n``$#``$*``$@``$?``$$``$!`2. 示例脚本示例脚本 - `special_variables.sh`3. 执行示例脚本4. 结论大树哥个人信息

在Shell脚本中,特殊变量提供了对脚本执行过程和执行环境的访问。它们帮助我们在脚本中获取脚本自身的名称、获取命令行参数以及处理其他重要信息。本教程将向你介绍Shell脚本中的特殊变量表达式参数的使用。

1. 特殊变量表达式参数

Shell脚本中的特殊变量表达式参数用于访问脚本的执行环境和传递给脚本的参数。

`$0`

$0表示当前脚本的名称。

`$n`

$n表示脚本的第n个参数,n是一个正整数。

`$#`

$#表示传递给脚本的参数个数。

`$*`

$*将所有传递给脚本的参数作为一个单词保存,参数之间用空格分隔。

`$@`

$@将所有传递给脚本的参数作为一个独立的单词保存。

`$?`

$?表示上一个命令的退出状态。

`$$`

$$表示当前脚本的进程ID。

`$!`

$!表示最近在后台运行的命令的进程ID。

2. 示例脚本

示例脚本 - `special_variables.sh`

 1#!/bin/bash
2
3# Shell脚本特殊变量表达式参数示例
4# 作者:大树哥
5
6# $0:脚本名称
7echo "当前脚本名称:$0"
8
9# $1、$2等:脚本参数
10echo "第一个参数:$1"
11echo "第二个参数:$2"
12
13# $#:参数个数
14echo "参数个数:$#"
15
16# $*:将所有参数作为单词保存
17echo "所有参数(作为单词):$*"
18
19# $@:将所有参数作为独立的单词保存
20echo "所有参数(独立单词):$@"
21
22# $?:上一个命令的退出状态
23ls /non_existent_directory
24if [ $? -ne 0 ]; then
25  echo "上一个命令执行失败"
26else
27  echo "上一个命令执行成功"
28fi
29
30# $$:当前脚本的进程ID
31echo "当前脚本进程ID:$$"
32
33# $!:最近在后台运行的命令的进程ID
34sleep 10 &
35echo "最近在后台运行的命令的进程ID:$!"

3. 执行示例脚本

在执行示例脚本之前,确保你拥有执行权限。如果没有,使用以下命令赋予执行权限:

1chmod +x special_variables.sh

然后,你可以运行这个示例脚本:

1./special_variables.sh arg1 arg2

请注意,这里我们传递了两个参数(arg1和arg2)给脚本,你可以根据需要修改或添加更多参数。

4. 结论

通过本教程,我们学习了Shell脚本中特殊变量表达式参数的使用。我们了解了如何获取脚本名称、获取命令行参数、获取参数个数,以及如何处理其他重要信息。这些特殊变量在Shell脚本编程中非常有用,它们帮助我们处理脚本的执行过程和执行环境。希望本教程对你有所帮助,继续学习和探索Shell编程,运维效率提高不止10倍!

大树哥个人信息

  • 网名:大树哥
  • 8年以上数据库中间件经验,专注于数据库中间件运维,Oracle、MySQL、Weblogic、WebSphere、Tomcat、Nginx等;
  • Oracle 19c OCP,软考数据系统工程师,系统规划与管理师高级等认证
  • 微信公众号: AI智能提效开发运维

标签:脚本,Shell,变量,示例,编程,参数,Day5.2,表达式
From: https://www.cnblogs.com/weixuexi/p/17587113.html

相关文章

  • 并发编程-CompletableFuture解析
    1、CompletableFuture介绍CompletableFuture对象是JDK1.8版本新引入的类,这个类实现了两个接口,一个是Future接口,一个是CompletionStage接口。CompletionStage接口是JDK1.8版本提供的接口,用于异步执行中的阶段处理,CompletionStage定义了一组接口用于在一个阶段执行结束之后,要么继......
  • Windows PowerShell 使用SDKMAN
    前言sdkman(TheSoftwareDevelopmentKitManager),从名字上就可以很明显的感觉到,这个软件是干什么的,有点像Nodejs中的nvm工具。在开发过程中,总能遇到这样一种情况,就是有些时候要这个版本的,有些时候要使用其他版本的,这样就得不停的切换环境变量中的设置。使用sdkman即可......
  • (保姆级图文)如何使用PowerShell连接Exchange Online
    直接开始菜单->所有程序-> WindowsPowerShell->WindowsPowerShell 然后右键使用管理员权限打开打开后窗口如下#连接ExchangeOnlinePowerShell#为了使从Internet下载的所有PowerShell脚本能够由受信任的发布者签名,#请在提升的PowerShell窗口(通过选择“以......
  • shell(linux)
    shell解释器可当作人与计算机硬件的“翻译官”,想要正确高效的做好系统运维工作,脚本的使用至关重要 一定程度上支持使用脚本来定制功能,这时候就要用到.bashrc了为了加载你的配置,bash在每次启动时都会加载.bashrc文件的内容。每个用户的home目录都有这个shell脚本。它......
  • 2023“钉耙编程”中国大学生算法设计超级联赛(4)Number Table
    题意对于一个\(2\timesn\)的矩阵,若每行每列数均不同且均\(\in[0,2^k)\),同时\(2n\)个数异或和为\(0\)则称该矩阵合法。给定\(n,k\),求总方案数。做法考虑若只有一行,即求\(n\)个不相同的数异或和为\(0\)的方案数:假定前\(n-1\)个数不同且已确定,此时仅需考虑第\(n\)个数是否在前......
  • Java8 函数式编程stream流
    开篇介绍Java8中新增的特性旨在帮助程序员写出更好的代码,其中对核心类库的改进是很关键的一部分,也是本章的主要内容。对核心类库的改进主要包括集合类的API和新引入的流(Stream),流使程序员得以站在更高的抽象层次上对集合进行操作。下面将介绍stream流的用法。1.初始环境准备......
  • Delphi 的 DBGrid 中的下拉列表和查找字段编程方法
    数据网格是非常流行的数据输入和显示形式,像大家熟悉的Excel、VFP 中的功能强大的BROWS 等,为广大程序员乐于采用。在用 Delphi 开发数据库应用系统时,利用数据网格DBGrid 输入数据时,有些字段只允许某几个固定的字符串,像档案案卷的保管期限,只有“永久”、“长期”和“短期”三种......
  • 不错的shell 脚本教程
    [url]http://neoman.iteye.com/blog/1485862[/url]超强视频教程推荐】方老师shell脚本讲座。特别适合新手,也是老手复习的好资料下载地址:(一)shell脚本与应用示例.rmvb:[url]http://szdxr008.qjwm.com/down_2730621.html[/url](二)三剑客--文本处理......
  • linux shell编程入门
    摘要介绍shell是什么shell快速开始一、基本概念1.shell是什么Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序用户可以用Shell来启动、挂起、停止甚至是编写一些程序。2.shell脚本|执行方式脚本格式要求脚本以#!/b......
  • 23年暑假大一第一周编程练习
    23年暑假大一第一周编程练习1.消失的数字:deffind_missing_number(nums):#计算完整数组的和complete_sum=sum(range(1,len(nums)+2))#range包:[1,7)#print(complete_sum)#1+2+3+4+5+6=21#计算数组中所有数的和array_sum=sum(nums)......