引号内的通配符


32

这将是一个简单的过程,但是在我的记忆中,当执行Shell脚本时,使用双引号将允许扩展globlob和变量。

但是在下面的代码中:

#!/bin/sh

echo *.sh
echo "*.sh"
echo '*.sh'

echo $LANG
echo "$LANG"
echo '$LANG'

我得到这个结果:

bob.sh redeployJboss.sh
*.sh
*.sh
en_US.utf8
en_US.utf8
$LANG

因此,单引号可防止glob和变量扩展,而双引号仅允许变量扩展而没有glob?

我可以使用任何报价模式吗?

Answers:


26

没错,单引号或双引号都不起作用。但是,您可以使用双引号字符串对glob进行插值:

$ echo“你好世界” * .sh“再见世界”
你好世界[文件列表]再见世界

6
甚至echo "$hello and $goodbye".*(混合变量扩展,空间,在同一个“字”一个水珠。
vonbrand

1
在这种情况下,通气似乎无效echo /path/to/file/*${variable}。附加内插电子邮件时如何显示?
CMCDragonkai '16

2
@CMCDragonkai echo "$FOLDER_PATH"/*.extension正常工作对我来说,违背了公认的答案,我不得不删除之间的空白"*。希望能帮助到你。
LostBalloon

@CMCDragonkai,@LostBalloon当我要使用具有可能带有空格的变量的全局变量时,我使用以下模式:(cd "$FOLDER_PATH" && echo *.extension)
Steven Darnell
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.