📜  Shell 脚本 - 变量替换

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

Shell 脚本 - 变量替换

外壳是帮助用户与系统连接的接口。使用 shell 相当于与操作系统间接通信。在 Linux 分布式系统中,我们每次使用终端时,都会连接一个 shell。 shell 的工作是分析用户给出的 Unix 命令或指令。这个过程涉及从用户那里获取命令并将它们转换为内核可以轻松理解的形式。简而言之,它充当用户和操作系统内核之间的媒介。内核是计算机操作系统中最关键的部分。

为了理解变量替换,让我们首先讨论 shell 脚本中的替换。替换是一种功能,通过它我们可以指示 shell 替换表达式的实际值。

转义序列的替换:

有一些字符序列并不代表它们的真实性质,但它们对操作系统具有特殊意义,这些序列称为转义序列。在命令中使用它们时,它们将被实际值替换。

Escape SequencesSignificance
\nadd a new line
\thorizontal tab
 \\backslash
\bbackspace
\rcarriage return

例子:

在这个脚本中,我们使用了两个 echo 命令来打印字符串。如您所见,我们在字符串末尾的新行 (\n) 中使用了转义序列。由于此字符的实际工作是添加新行,因此添加了新行(在输出中清晰可见)。此外,在第二个语句中,我们在开头使用了三个水平制表字符。由于此字符的实际工作是添加一个水平制表符空格,因此在将字符串打印到控制台之前添加了三个水平空格(在输出中清晰可见)。

#!/bin/sh

#statement 1
echo -e "GeeksforGeeks\n"

# statement 2 
echo -e "\t\tis the best"

输出:

变量替换:

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:+value}If myVariable is set then the value is substituted for myVariable.
5${myVariable:? message}If myVariable is not-set (or null) then the message is printed as standard error.

这些表达式的工作已在以下脚本中详细讨论:

例子:

#!/bin/sh


# If myVariable is unset or null then 
# assign 100 to it
echo ${myVariable:- 100}
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:+"Nainwal"}
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
unset myVariable

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

输出: