Des*_*PRG 5 linux shell scripting variable-substitution
我对引用变量的双引号的含义感到困惑。例如,以下两个脚本给出了相同的输出。双引号的真正含义是什么?
脚本1
getent passwd | while IFS=: read a b c d e f ; do
echo login "$a" is "$d"
done
Run Code Online (Sandbox Code Playgroud)
脚本 2
#! /bin/sh
getent passwd | while IFS=: read a b c d e f ; do
echo login $a is $d
done
Run Code Online (Sandbox Code Playgroud)
看看高级 Bash 脚本指南,特别是5.1节,它涵盖了引用变量。双引号变量的原因是变量的内容可能包含空格。空格通常是边界字符,它表示大多数命令的文本字符串中原子的中断。
有一个很好的例子说明了这一点:
摘自上述链接
variable2="" # Empty.
COMMAND $variable2 $variable2 $variable2
# Executes COMMAND with no arguments.
COMMAND "$variable2" "$variable2" "$variable2"
# Executes COMMAND with 3 empty arguments.
COMMAND "$variable2 $variable2 $variable2"
# Executes COMMAND with 1 argument (2 spaces).
# Thanks, Stéphane Chazelas.
Run Code Online (Sandbox Code Playgroud)
在上面你可以看到,根据你引用变量的方式,它要么没有参数,要么是 3,要么是 1。
注意:感谢@StéphaneChazelas 向 ABS 指南提供反馈,以便它可以返回到他一直参与的这个站点。
归档时间: |
|
查看次数: |
12685 次 |
最近记录: |