4 $ 符号

news/2025/1/11 12:47:33/

引用变量

  • 普通变量:使用 $ 符号引用变量的值。
    name="John"
    echo "Hello, $name"
    # 输出: Hello, John
    

特殊参数

  • $#传递给脚本的参数个数

    echo "Number of arguments: $#"
    
  • $0:脚本的名称。

    echo "Script name: $0"
    
  • $1, $2, ..., $N:传递给脚本的各个参数,$1 表示第一个参数,$2 表示第二个参数,以此类推。

    echo "First argument: $1"
    echo "Second argument: $2"
    
  • $*:传递给脚本的所有参数,作为一个单字符串。

    echo "All arguments (single string): $*"
    
  • $@:传递给脚本的所有参数,作为独立的字符串。

    echo "All arguments (separate strings): $@"
    
  • $?上一个命令的退出状态码。

    ls /nonexistent_directory
    echo "Exit status of last command: $?"
    
  • $$当前脚本的进程 ID (PID)。

    echo "Current script PID: $$"
    
  • $!最后一个后台进程的进程 ID (PID)

    sleep 10 &
    echo "Last background process PID: $!"
    
  • $-:当前 Shell 的选项标志。

    echo "Current shell options: $-"
    
  • $_:上一个命令的最后一个参数。

    echo "Last argument of the previous command: $_"
    

示例脚本

以下是一个示例脚本,展示了如何使用这些特殊参数:

#!/bin/bashecho "Script name: $0"
echo "Number of arguments: $#"
echo "All arguments (single string): $*"
echo "All arguments (separate strings): $@"if [ $# -ge 1 ]; thenecho "First argument: $1"
fiif [ $# -ge 2 ]; thenecho "Second argument: $2"
fiecho "Current script PID: $$"sleep 5 &
echo "Last background process PID: $!"ls /nonexistent_directory
echo "Exit status of last command: $?"echo "Current shell options: $-"
echo "Last argument of the previous command: $_"

运行这个脚本时,可以传递一些参数来观察这些特殊参数的输出。例如:

kemao@TP340:~/shell-test$ ./test.sh test sss
Script name: ./test.sh
Number of arguments: 2
All arguments (single string): test sss
All arguments (separate strings): test sss
First argument: test
Second argument: sss
Current script PID: 592202
Last background process PID: 592203
ls: cannot access '/nonexistent_directory': No such file or directory
Exit status of last command: 2
Current shell options: hB
Last argument of the previous command: Current shell options: hB

这个脚本将输出脚本名称、参数个数、所有参数、各个参数、当前脚本的 PID、最后一个后台进程的 PID、上一个命令的退出状态码、当前 Shell 的选项标志以及上一个命令的最后一个参数。


http://www.ppmy.cn/news/1562236.html

相关文章

Java Spring Boot实现基于URL + IP访问频率限制

点击下载《Java Spring Boot实现基于URL IP访问频率限制(源代码)》 1. 引言 在现代 Web 应用中,接口被恶意刷新或暴力请求是一种常见的攻击手段。为了保护系统资源,防止服务器过载或服务不可用,需要对接口的访问频率进行限制。本文将介绍如…

C++例程:使用I/O模拟IIC接口(6)

完整的STM32F405代码工程I2C驱动源代码跟踪 一)myiic.c #include "myiic.h" #include "delay.h" #include "stm32f4xx_rcc.h" //初始化IIC void IIC_Init(void) { GPIO_InitTypeDef GPIO_InitStructure;RCC_AHB1PeriphCl…

php.ini配置中有10处设置不当,会使网站存在安全问题

在 php.ini 配置文件中,有一些设置如果配置不当,可能会导致网站面临安全风险。PHP 的安全性很大程度上依赖于这些配置选项的正确设置。以下是 10 个可能存在安全问题的 PHP 配置项,如果配置不当,可能会导致网站存在安全漏洞: 1. display_errors 问题: 启用错误显示时,…

【Oracle篇】深入了解执行计划中的访问路径(含表级别、B树索引、位图索引、簇表四大类访问路径)

💫《博主介绍》:✨又是一天没白过,我是奈斯,从事IT领域✨ 💫《擅长领域》:✌️擅长阿里云AnalyticDB for MySQL(分布式数据仓库)、Oracle、MySQL、Linux、prometheus监控;并对SQLserver、NoSQL(…

Word表格内容批量写入Excel

在日常办公中,Word表格是记录和整理信息的常用工具,但面对需要将Word中的表格数据批量转入Excel的场景,手动操作往往既耗时又容易出错。如果你正在寻找一款能够快速将Word表格内容批量写入Excel的工具,“我爱Excel”将是你不可或缺…

银河麒麟编译QXlsx,使用Qt5.14.2

一、环境准备 系统:银河麒麟V10 QT:5.14.2 QXlsx源码:QtXlsxWriter-master.zip 下载地址:QXlsx Qt环境的安装配置此处不再赘述。 二、开始构建 先将源码压缩包解压 进入到文件夹内 在此处打开终端 输入qmake,回车…

后端技术选型 sa-token校验学习 上 登录校验复习

sa-token 的官网 Sa-Token 复习 首先我们要明确一下 cookie 是什么 登录校验 Sa-Token 官方文档里面的 对于一些登录之后才能访问的接口(例如:查询我的账号资料),我们通常的做法是增加一层接口校验: 如果校验通过…

Java爬取1688商品详情API接口

在当今的电商时代,1688平台凭借其庞大的商品种类和丰富的供应商资源,成为了众多企业和个人获取商品信息的重要渠道。对于开发者而言,能够通过API接口爬取1688商品的详细信息,将极大地助力于数据分析、市场调研、价格监控等多方面的…