📜  Shell 脚本 - 替换

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

Shell 脚本 - 替换

有些表达方式传达了特殊的含义。换句话说,他们不是他们看起来的样子。每当遇到这样的表达式时,shell 都会执行替换。因此,替换被定义为由 shell 执行的一种机制,其中它用表达式的实际值替换表达式的值。

转义序列:

转义序列是一组字符,在用作字符串字面量时不代表其实际值。下面列出了一些转义序列:

Sr. No.Escape SequencesSignificance (actual value)
1\nnew line
2\fform feed
3\rcarriage return
4\bbackspace
5\thorizontal tab
6\vvertical tab
7\\backslash

Shell 将转义序列替换为其实际值。

例子:

在这个 shell 脚本中,首先我们使用了一个 echo 命令来打印一个字符串。请注意,我们在字符串末尾使用了转义序列 (\n)。它会在打印字符后添加一个字符串。

#!/bin/sh

// Print the string
echo -e "Hello World! \n"
  
// Print the string
echo -e "Hello GeeksforGeeks"

输出:

变量替换:

shell 允许我们根据变量的初始化状态来操作变量的值。

Sr No.ExpressionSignificance
1${myVariable}substitute the value of myVariable.
2${myVariable:-value}If myVariable is not-set (or null) then the value is substituted for myVariable.
3${myVariable:=value}If myVariable is not-set (or null), then it is set to value.
4${myVariable:? message}If myVariable is not-set (or null) then the message is printed as standard error.
5${myVariable:+value}If myVariable is set then the value is substituted for myVariable.

例子:

这些表达式在下面的 shell 脚本中演示。

#!/bin/sh


# If myVariable is unset or null 
# then assign 12 to it
echo ${myVariable:- 11}
echo "1. The value of myVariable is ${myVariable}"


# If myVariable is unset or null 
# then assign "GeeksforGeeks" to it
echo ${myVariable:="GeeksforGeeks"}
echo "2. Value of myVariable is ${myVariable}"

# unset myVariable
unset myVariable

# If myVariable is set then substitute 
# the value
echo ${myVariable:+"GeeksforGeeks"}
echo "3. Value of myVariable is $myVariable"

myVariable="GeeksforGeeks"

# If myVariable is set then substitute 
# the value
echo ${myVariable:+"Bhuwanesh"}
echo "4. Value of myVariable is $myVariable"

# If myVaraible is not-set or null then 
# print the message
echo ${myVariable:?"message"}
echo "5. Value of myVariable is ${myVariable}"

unset myVariable

# If myVaraible is not-set or null then
# print the message
echo ${myVariable:?"message"}
echo "6. Value of myVariable is ${myVariable}"

输出:

命令替换:

命令替换是程序员在 bash 脚本中遵循的一种机制。在这种机制中,命令的输出会替换命令本身。 Bash 通过执行命令然后用命令的标准输出替换命令替换来操作扩展。简而言之,UNIX 命令的输出被捆绑,然后用作命令。

为了更好地理解它,让我们考虑一个例子。 Linux 中的 seq 命令用于以 INCREMENT 为步长打印从 START 到 END 的数字。

句法:

seq START INCREMENT END  

返回类型:

例子:

在下面的脚本中,我们打印从 2 到 20 的数字,相差 2。换句话说,我们打印的偶数最多为 30。

#!/bin/bash

# your code goes here

seq 2 2 30

输出:

我们可以将上述命令的输出用作新命令。考虑下面的脚本,

例子:

#!/bin/bash
# your code goes here
 
echo $(seq 2 2 20)

输出: