在某些脚本中,我想使用当前文件夹内的文件夹名称。我想获取文件夹名称,这里只将有问题的部分放在示例中。如果从终端运行此命令,则会得到:
$ for D in */; do echo ${D%%+(/)} ; done
galaxya8
iphone6s
motog6
motog7
$ echo ${0}
/bin/bash
$ bash --version
GNU bash, version 4.4.19(1)-release (x86_64-pc-linux-gnu)
Run Code Online (Sandbox Code Playgroud)
但是,如果我将其放入文件中并运行该文件,则会得到带有斜杠的名称:
$ echo 'for D in */; do echo ${D%%+(/)} ; done' >> test.sh
$ bash test.sh
galaxya8/
iphone6s/
motog6/
motog7/
Run Code Online (Sandbox Code Playgroud)
我在这里看到了bash的扩展。我想念什么?也许只有交互式shell的一些默认值?
最小,完整且可验证的示例(感谢@ kamil-cuk):
$ D=a/; echo ${D%%+(/)}; bash <<<'D=a/; echo ${D%%+(/)}'
a
a/
Run Code Online (Sandbox Code Playgroud)