或者,有关强大的文件名处理和在 shell 脚本中传递的其他字符串的介绍性指南。
我写了一个 shell 脚本,它在大多数情况下运行良好。但它在某些输入(例如某些文件名)上窒息。
我遇到了如下问题:
hello world
,它被视为两个单独的文件hello
和world
.\[*?
,它们会被一些文本替换,这实际上是文件的名称。'
(或双引号"
),在那之后事情变得很奇怪。\
分隔符)。这是怎么回事,我该如何解决?
这将是一个简单的方法,但在我的记忆中,在编写 shell 脚本时,使用双引号将允许扩展通配符和变量。
但是在下面的代码中:
#!/bin/sh
echo *.sh
echo "*.sh"
echo '*.sh'
echo $LANG
echo "$LANG"
echo '$LANG'
Run Code Online (Sandbox Code Playgroud)
我得到这个结果:
bob.sh redeployJboss.sh
*.sh
*.sh
en_US.utf8
en_US.utf8
$LANG
Run Code Online (Sandbox Code Playgroud)
所以单引号可以防止 glob AND 变量扩展,但双引号只允许变量扩展而不允许 globbing?
我可以使用任何引用模式吗?