Bootstrap

Shell 字符串

       单引号

  • 保留字面值:单引号内的所有字符都会被保留为字面值,不会进行任何解析或扩展。

    s1=hello world
    echo '$s1' #输出:$s1
  • 单引号中的单引号对仍然会被解析

    str='world' 
    greeting='hello,'$str'!' 
    echo $greeting #输出hello,world!

    双引号

  • 允许变量解析:双引号内的变量会被替换为其值。所有有意义的代码在双引号内都会得到解析和扩展。

    s1=hello world
    echo"$s1" #输出:hello world

大括号{}的使用

  • 大括号可以用于明确变量的边界,尤其是在变量名与后续文本紧密相连时。这有助于防止 Shell 错误地解析变量名。

    filename="file.txt"
    echo "The file is ${filename}."  # 正确输出:"The file is file.txt."
    echo "The file is $filename."   # 这种写法也是正确的,但当变量名与后续文本紧密相连时可能会出错
    echo "The file is $filenametxt." # 错误输出:"The file is .txt.",Shell错误地将"filenametxt"解析为一个变量
  • 大括号还可以用于获取参数的长度。

    string="Hello, World!"
    echo ${#string}  # 输出:13

字符串截取

  • 使用${string:start:length}来截取字符串。

    str="Hello, World!"
    echo ${str:0:5}  # 输出:Hello 0开始,一共五个字符

字符串拼接

  • 可以直接将两个字符串放在一起进行拼接。

    str1="Hello"
    str2="World"
    str3="$str1, $str2!"
    echo $str3  # 输出:Hello, World!

查找子字符串

  • 使用expr index命令来查找子字符串。

    str="Hello, World!"
    index=$(expr index "$str" "World") # 参数一表示总字符串,参数二为目标子字符串中的任意一个字母
    echo $index  # 输出:3(表示"World"中任意字符在字符串中的起始位置)结果为l最早出现,所以结果为3

替换子字符串

  • 使用${string/old/new}来进行子字符串替换。

    str="Hello, War""
    new_str=${str/War/World}
    echo $new_str  # 输出:Hello, World!
;