Linux笔记之bash脚本中的$符号

Linux笔记之bash脚本中的$符号

code review!

文章目录

  • [Linux笔记之bash脚本中的符号](#Linux笔记之bash脚本中的符号)
    • [符号和大括号{}结合使用](#符号和大括号{}结合使用)

在 Bash 脚本中,`$` 符号被用于许多不同的上下文中,主要用于访问变量的值、参数扩展、算术运算以及命令替换等:

  1. 访问变量的值

    当你在变量名前面加上 $ 符号时,它会被替换成该变量的值。

    bash 复制代码
    name="world"
    echo "Hello, $name"

    输出将会是 Hello, world

  2. 位置参数
    $0 代表脚本的名字,$1$9 代表第一到第九个参数,$# 代表参数的个数。

    bash 复制代码
    echo "Script name: $0"
    echo "First argument: $1"
    echo "Number of arguments: $#"
  3. 特殊参数

    • $*$@ 都代表所有的位置参数,但是在引号中有所不同。
    • "$*" 将所有的位置参数当作一个单一的字符串。
    • "$@" 会将每个参数当作独立的带引号的字符串。
  4. 退出状态
    $? 代表上一个命令的退出状态(返回值)。0 通常意味着成功,其他值意味着有错误或问题。

    bash 复制代码
    grep "text" file.txt
    if [ $? -eq 0 ]; then
        echo "Text found."
    else
        echo "Text not found."
    fi
  5. 算术扩展
    $((expression)) 用于算术运算。

    bash 复制代码
    num1=5
    num2=3
    sum=$((num1 + num2))
    echo $sum  # 输出 8
  6. 命令替换
    $(command) 用于命令替换,它执行命令并将输出用作其他命令或变量的值。

    bash 复制代码
    files=$(ls)
    echo "Files in directory: $files"
  7. 双引号中的变量扩展

    当你在双引号中使用变量时,变量会扩展成它的值。单引号则不会进行扩展。

    bash 复制代码
    greeting="hello"
    echo "$greeting world"
    echo '$greeting world'

    第一个 echo 命令会输出 hello world,而第二个则会输出字面上的 $greeting world

$符号和大括号{}结合使用

在 Bash 脚本中,$ 符号可以与大括号 {} 结合使用,这种结合使用有几个好处和用途:

  1. 变量扩展

    大括号用于明确变量的边界。这在变量名可能与紧跟其后的字符混淆时非常有用。

    bash 复制代码
    greeting="world"
    echo "Hello, ${greeting}ly"  # 会输出 Hello, worldly

    如果没有大括号,Bash 会尝试查找名为 greetingly 的变量,这很可能不是你想要的。

  2. 字符串操作

    大括号还可以用于对变量进行各种字符串操作,如提取子字符串、查找和替换等。

    • 子字符串提取

      bash 复制代码
      str="abcdefghijk"
      echo "${str:3:4}"  # 从索引3开始提取长度为4的子字符串,输出 "defg"
    • 默认值

      bash 复制代码
      echo "${unset_var:-default_value}"  # 如果变量 unset_var 没有设置,输出 "default_value"
    • 替换

      bash 复制代码
      filepath="/path/to/your/file"
      echo "${filepath/to/from}"  # 替换第一个匹配的 "to",输出 "/path/from/your/file"
      echo "${filepath//to/from}"  # 替换所有匹配的 "to",输出 "/path/from/your/file"
  3. 数组操作

    大括号也用于访问数组元素和执行数组操作。

    bash 复制代码
    array=(one two three)
    echo "${array[1]}"  # 输出 "two"
  4. 参数扩展的高级用法

    大括号提供了许多高级参数扩展的选项,例如字符串长度、模式匹配等。

    • 字符串长度

      bash 复制代码
      mystring="hello world"
      echo "${#mystring}"  # 输出字符串长度 "11"
    • 模式删除

      bash 复制代码
      filename="myfile.txt"
      echo "${filename%.*}"  # 删除最短匹配 . 及其后面的内容,输出 "myfile"
      echo "${filename%%.*}"  # 删除最长匹配 . 及其后面的内容,输出 "myfile"

大括号的使用增加了代码的可读性和灵活性,可以帮助你更精确地控制变量的行为和输出。

相关推荐
pd_linux15 分钟前
【无标题】arm v8 速记
linux
毕设源码-朱学姐19 分钟前
【开题答辩全过程】以 基于uniapp的云笔记系统的设计与实现为例,包含答辩的问题和答案
笔记·uni-app
sagima_sdu21 分钟前
主流开源大模型架构全景
大数据·linux·人工智能
Wyawsl22 分钟前
nginx安全笔记
笔记·nginx·安全
Darth Nihilus24 分钟前
Raspberry Pi Compute Module Zero Development Board开发板(四)
linux·嵌入式硬件
Xzq21050927 分钟前
Reactor模式
linux·网络
小鸡吃米…31 分钟前
Python 中的并发 —— 进程池
linux·服务器·开发语言·python
星辰引路-Lefan32 分钟前
全平台 Docker 部署 CPA(CLIProxyAPI Plus) 灵活定制指南 (Linux/Windows)——接入Codex
linux·windows·docker·ai·ai编程
历程里程碑36 分钟前
40 UDP - 2 C++实现英汉词典查询服务
linux·开发语言·数据结构·c++·ide·c#·vim
程序设计实验室1 小时前
别再手动复制SSH公钥了,Linux服务器一键从GitHub快速导入公钥
linux