📜  Shell 脚本中的字符串操作

📅  最后修改于: 2022-05-13 01:57:34.698000             🧑  作者: Mango

Shell 脚本中的字符串操作

字符串操作被定义为对字符串执行若干操作,从而导致其内容发生变化。在 Shell Scripting 中,这可以通过两种方式完成:纯 bash字符串操作和通过外部命令的字符串操作。

纯 bash字符串操作的基础:

1.为变量赋值并打印其内容:在bash中,' $ '后跟变量名用于打印变量的内容。 Shell 在内部使用其值扩展变量。 shell 的这个特性也被称为参数扩展。 Shell 不关心变量的类型,可以存储字符串、整数或实数。
句法:

VariableName='value'
echo $VariableName
or
VariableName="value"
echo ${VariableName}
or
VariableName=value
echo "$VariableName"

注意:变量赋值中的“ = ”符号周围不应有任何空格。当您使用VariableName=value 时,shell 将“ = ”视为赋值运算符并将值分配给变量。当您使用VariableName = value 时,shell 假定VariableName是命令的名称并尝试执行它。

例子:



将内容分配给变量并打印其内容

2. 要在 Bash Shell 中打印字符串的长度: ' # ' 符号用于打印字符串的长度。

句法:

variableName=value
echo ${#variablename}

例子:

在 Bash Shell 中打印字符串的长度

3. 在 Bash Shell 中使用变量连接字符串:在 bash 中,将字符串一起列出来连接字符串。如此形成的结果字符串是一个包含所有列出的字符串的新字符串。

句法:

var=${var1}${var2}${var3}
or
var=$var1$var2$var3
or
var="$var1""$var2""$var3"

连接字符串之间的任何字符:



The following will insert "**" between the strings
var=${var1}**${var2}**${var3}
or
var=$var1**$var2**$var3
or
var="$var1"**"$var2"**"$var3"

The following concatenate the strings using space:
var=${var1} ${var2} ${var3}
or
var="$var1" "$var2" "$var3"
or
echo ${var1} ${var2} ${var3}

注意:通过空格连接字符串,避免使用var=$var1 $var2 $var3 。在这里,shell 将$var2$var3假定为命令并尝试执行它们,从而导致错误。

例子:

使用变量在 Bash Shell 中连接字符串

4. 在 Bash Shell 中使用数组连接字符串在 bash 中,数组也可用于连接字符串。

句法:

To create an array:
arr=("value1" value2 $value3)

To print an array:
echo ${arr[@]}

To print length of an array:
echo ${#arr[@]}

Using indices (index starts from 0):
echo ${arr[index]}

Note: echo ${arr} is the same as echo ${arr[0]}

例子:

使用数组在 Bash Shell 中连接字符串

5. 从字符串提取子串:在 Bash 中,可以从字符串提取字符的子串。

句法:

${string:position}  --> returns a substring starting from $position till end
${string:position:length} --> returns a substring of $length characters starting from $position.

注意: $length$position必须始终大于或等于零。



如果$position小于 0,它将打印完整的字符串。

如果 $ length小于 0,则会引发错误并且不会执行。

例子:

从字符串中提取子字符串

6.子串匹配:在Bash中,可以从前面或后面找到和删除子串的最短和最长匹配项。

句法:

To delete the shortest substring match from front of $string:
${string#substring}

To delete the shortest substring match from back of $string:
${string%substring}

To delete the longest substring match from front of $string:
${string##substring}

To delete the shortest substring match from back of $string of $string:
${string%%substring}

例子:

子串匹配

在上面的例子中:

  • 第一个echo语句子串' *。 “匹配以点结束字符,#删除从字符串前面的子串最短的匹配,所以它去除的子”欢迎。 '。
  • 第二个echo语句子“*”的子字符串开始点与结束字符匹配,并且删除从字符串后面的字符串的最短匹配,所以它去除的子“.GeeksForGeeks”
  • 第三个echo语句子串' *。 “匹配以点结束字符,##删除从字符串前面的子串的最长匹配,所以它去除的子” Welcome.to。 '
  • 第四echo语句子“*”的子字符串开始点与结束字符匹配,和%%删除从字符串后面的字符串的最长匹配,所以它去除的子“.to.GeeksForGeeks”。