Linux Shell脚本入门:参数符号$0,$1,$#,$@,$$与模式替换符^^,,的实用手册

2024-08-27 10:44

本文主要是介绍Linux Shell脚本入门:参数符号$0,$1,$#,$@,$$与模式替换符^^,,的实用手册,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在 Linux 中,$0$1$#$@$*$?$$ 等符号在 shell 脚本中经常使用,它们用于处理脚本参数、变量和状态。此外,^^,, 是模式替换符,用于修改字符串大小写。还有很多其他的选项和表达式可以用于控制脚本的行为。

1. 位置参数变量

  • $0: 当前脚本或命令的名称。

    echo "Script name: $0"
    
  • $1$9: 传递给脚本的第一个到第九个参数。

    echo "First parameter: $1"
    echo "Second parameter: $2"
    
  • $#: 传递给脚本的参数总数。

    echo "Number of parameters: $#"
    
  • $@: 传递给脚本的所有参数,每个参数是独立的字符串。

    for param in "$@"
    doecho "Parameter: $param"
    done
    
  • $*: 传递给脚本的所有参数,作为一个单一的字符串。

    echo "All parameters: $*"
    

2. 其他特殊变量

  • $?: 上一个命令的退出状态,0 表示成功,非 0 表示失败。

    ls /nonexistent_directory
    echo "Exit status: $?"
    
  • $$: 当前 shell 脚本的进程 ID。

    echo "Process ID: $$"
    
  • $!: 最近执行的后台命令的进程 ID。

    sleep 10 &
    echo "Last background job PID: $!"
    

3. 字符串模式替换符

  • ^^: 将字符串中的所有小写字母转换为大写字母。

    var="hello world"
    echo "${var^^}"
    
  • ,,: 将字符串中的所有大写字母转换为小写字母。

    var="HELLO WORLD"
    echo "${var,,}"
    
  • ${var^}: 将字符串的第一个字符转换为大写。

    var="hello world"
    echo "${var^}"
    
  • ${var,}: 将字符串的第一个字符转换为小写。

    var="HELLO WORLD"
    echo "${var,}"
    

4. 参数处理选项

  • -a: 在 shopt 中启用或禁用数组变量索引扩展(需要使用 shopt -sshopt -u)。

  • -b: 在 Bash 中,启动脚本时可以用来执行 read 命令或设置变量之前的提示符。

  • -e: 启用脚本中的 set -e 选项,使得脚本在遇到第一个错误(退出状态非零)时停止执行。

  • -f: 禁用文件名扩展(globbing),例如 *?

  • -n: 读取命令但不执行,用于检查语法。

  • -u: 当引用未设置的变量时,返回错误。

  • -v: 在执行每一行命令之前,将其打印到标准输出。

  • -x: 在执行每一行命令之前,将其打印到标准输出(通常用于调试)。

5. Bash 的表达式选项

  • $((expression)): 算术扩展,用于执行算术运算。

    result=$((3 + 5))
    echo "Result: $result"
    
  • ${var:-default}: 如果变量 var 未定义或为空,返回 default

    echo "${name:-'default_name'}"
    
  • ${var:=default}: 如果变量 var 未定义或为空,将其设置为 default,并返回 default

    echo "${name:='default_name'}"
    
  • ${var:+replacement}: 如果变量 var 已定义且不为空,返回 replacement;否则返回空字符串。

    echo "${name:+'replacement_name'}"
    
  • ${var:?error_message}: 如果变量 var 未定义或为空,打印 error_message 并退出脚本。

    echo "${name:?'Name not defined'}"
    
  • ${#var}: 返回变量 var 的长度。

    echo "Length of name: ${#name}"
    

6. 条件表达式

  • [[ expression ]]: 用于测试条件的高级测试命令,支持字符串比较、模式匹配等。

    if [[ "$name" == "admin" ]]; thenecho "Welcome, admin!"
    fi
    
  • -eq: 数字相等。

  • -ne: 数字不等。

  • -lt: 小于。

  • -le: 小于或等于。

  • -gt: 大于。

  • -ge: 大于或等于。

  • -z: 字符串为空。

  • -n: 字符串不为空。

7. 文件测试表达式

  • -e file: 文件存在。
  • -f file: 文件是普通文件。
  • -d file: 文件是目录。
  • -r file: 文件可读。
  • -w file: 文件可写。
  • -x file: 文件可执行。

这些符号和选项在 Linux 脚本编程中非常有用,熟练掌握它们可以编写出功能强大且灵活的脚本。

这篇关于Linux Shell脚本入门:参数符号$0,$1,$#,$@,$$与模式替换符^^,,的实用手册的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1111447

相关文章

Linux使用fdisk进行磁盘的相关操作

《Linux使用fdisk进行磁盘的相关操作》fdisk命令是Linux中用于管理磁盘分区的强大文本实用程序,这篇文章主要为大家详细介绍了如何使用fdisk进行磁盘的相关操作,需要的可以了解下... 目录简介基本语法示例用法列出所有分区查看指定磁盘的区分管理指定的磁盘进入交互式模式创建一个新的分区删除一个存

MySQL中时区参数time_zone解读

《MySQL中时区参数time_zone解读》MySQL时区参数time_zone用于控制系统函数和字段的DEFAULTCURRENT_TIMESTAMP属性,修改时区可能会影响timestamp类型... 目录前言1.时区参数影响2.如何设置3.字段类型选择总结前言mysql 时区参数 time_zon

Linux使用dd命令来复制和转换数据的操作方法

《Linux使用dd命令来复制和转换数据的操作方法》Linux中的dd命令是一个功能强大的数据复制和转换实用程序,它以较低级别运行,通常用于创建可启动的USB驱动器、克隆磁盘和生成随机数据等任务,本文... 目录简介功能和能力语法常用选项示例用法基础用法创建可启动www.chinasem.cn的 USB 驱动

java脚本使用不同版本jdk的说明介绍

《java脚本使用不同版本jdk的说明介绍》本文介绍了在Java中执行JavaScript脚本的几种方式,包括使用ScriptEngine、Nashorn和GraalVM,ScriptEngine适用... 目录Java脚本使用不同版本jdk的说明1.使用ScriptEngine执行javascript2.

Python如何使用seleniumwire接管Chrome查看控制台中参数

《Python如何使用seleniumwire接管Chrome查看控制台中参数》文章介绍了如何使用Python的seleniumwire库来接管Chrome浏览器,并通过控制台查看接口参数,本文给大家... 1、cmd打开控制台,启动谷歌并制定端口号,找不到文件的加环境变量chrome.exe --rem

高效管理你的Linux系统: Debian操作系统常用命令指南

《高效管理你的Linux系统:Debian操作系统常用命令指南》在Debian操作系统中,了解和掌握常用命令对于提高工作效率和系统管理至关重要,本文将详细介绍Debian的常用命令,帮助读者更好地使... Debian是一个流行的linux发行版,它以其稳定性、强大的软件包管理和丰富的社区资源而闻名。在使用

解决Cron定时任务中Pytest脚本无法发送邮件的问题

《解决Cron定时任务中Pytest脚本无法发送邮件的问题》文章探讨解决在Cron定时任务中运行Pytest脚本时邮件发送失败的问题,先优化环境变量,再检查Pytest邮件配置,接着配置文件确保SMT... 目录引言1. 环境变量优化:确保Cron任务可以正确执行解决方案:1.1. 创建一个脚本1.2. 修

Linux Mint Xia 22.1重磅发布: 重要更新一览

《LinuxMintXia22.1重磅发布:重要更新一览》Beta版LinuxMint“Xia”22.1发布,新版本基于Ubuntu24.04,内核版本为Linux6.8,这... linux Mint 22.1「Xia」正式发布啦!这次更新带来了诸多优化和改进,进一步巩固了 Mint 在 Linux 桌面

LinuxMint怎么安装? Linux Mint22下载安装图文教程

《LinuxMint怎么安装?LinuxMint22下载安装图文教程》LinuxMint22发布以后,有很多新功能,很多朋友想要下载并安装,该怎么操作呢?下面我们就来看看详细安装指南... linux Mint 是一款基于 Ubuntu 的流行发行版,凭借其现代、精致、易于使用的特性,深受小伙伴们所喜爱。对

什么是 Linux Mint? 适合初学者体验的桌面操作系统

《什么是LinuxMint?适合初学者体验的桌面操作系统》今天带你全面了解LinuxMint,包括它的历史、功能、版本以及独特亮点,话不多说,马上开始吧... linux Mint 是一款基于 Ubuntu 和 Debian 的知名发行版,它的用户体验非常友好,深受广大 Linux 爱好者和日常用户的青睐,