我正在尝试学习如何trap
在 Bash 上使用信号命令。该trap
命令非常易于使用,但我脑海中浮现的问题是使用单引号和双引号的重要性。
与命令一起使用的单引号和双引号有什么区别
trap
?你能举几个简单的例子来清楚地说明这两种用途之间的区别吗?
我正在尝试学习如何trap
在 Bash 上使用信号命令。该trap
命令非常易于使用,但我脑海中浮现的问题是使用单引号和双引号的重要性。
与命令一起使用的单引号和双引号有什么区别trap
?
你能举几个简单的例子来清楚地说明这两种用途之间的区别吗?
该
trap
命令仅将字符串作为 shell 命令处理,例如eval
. 该字符串将被处理以进行扩展,因此双引号和单引号之间的区别在于第一次扩展发生的时间。在双引号中,它们在设置陷阱时发生,在触发时在单引号中。例如,这将
foo=1
在read
中断时打印,但使用单引号会打印foo=2
:当然,即使使用双引号,当陷阱触发时,生成的命令也会被扩展,因此
foo=$0
在上面的陷阱之前的行上会导致脚本在中断时打印脚本的名称。