单引号
-
保留字面值:单引号内的所有字符都会被保留为字面值,不会进行任何解析或扩展。
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!