小编Joh*_*udd的帖子

为什么模式"*.so?(.*)"在脚本中产生语法错误但在命令行上没有?

这种模式有点不寻常,因为我添加了尾部的"?(.*)"部分.它按照我的预期在命令行上工作,但我在脚本中得到了相同的语法错误.

$ bash --version
GNU bash, version 4.3.11(1)-release (i686-pc-linux-gnu)
...
$ cat x.sh
touch a.so a.so.1
ls *.so?(.*)
rm *.so?(.*)
$ touch a.so a.so.1
$ ls *.so?(.*)
a.so  a.so.1
$ rm *.so?(.*)
$ ls
x.sh
$ bash x.sh
x.sh: line 2: syntax error near unexpected token `('
x.sh: line 2: `ls *.so?(.*)'
$
Run Code Online (Sandbox Code Playgroud)

syntax bash shell

2
推荐指数
1
解决办法
187
查看次数

标签 统计

bash ×1

shell ×1

syntax ×1