当只有一个元素时大括号不起作用

2 shell brace-expansion

我能够根据它们的扩展名 scp 文件,

 scp sk@localhost:/home/sk/*.{txt,text} .
Run Code Online (Sandbox Code Playgroud)

但是当我尝试 scp 单个扩展类型时,它失败了,

 scp sk@localhost:/home/sk/*.{txt} .
Run Code Online (Sandbox Code Playgroud)

我能够通过删除案例#2 中的花括号来解决这个错误,

我只是好奇为什么使用花括号会失败,只有文件扩展名类型。

mur*_*uru 8

假设您使用的是 bash,文档说:

格式正确的大括号扩展必须包含不带引号的左括号和右括号,以及至少一个不带引号的逗号或有效的序列表达式。任何格式不正确的大括号扩展都保持不变。

因此,{foo}不是正确形成的大括号扩展:

$ bash -c 'echo {foo} {foo,bar}'
{foo} foo bar
Run Code Online (Sandbox Code Playgroud)

  • 以及如何实现它?如何编写只有一个元素的括号壳扩展表达式? (2认同)