Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 正在查找echo{,}foo的故障_String_Bash_Brace Expansion - Fatal编程技术网

String 正在查找echo{,}foo的故障

String 正在查找echo{,}foo的故障,string,bash,brace-expansion,String,Bash,Brace Expansion,表达式{,}是如何工作的 我试着在SOF上搜索,甚至在google上搜索,甚至在bash的手册页上搜索,但我还没有找到对此的解释 通过摆弄表达式,我了解到它是某种字符串复制函数 echo{,} foo >> echo echo foo echo foo{,} >> foo foo 这个表达式是如何工作的?这个有名字吗?另外,您能提供一个使用此函数的实际示例吗?它被称为 这里有一个简单的解释 {,}将通过追加空字符串,将左相邻字符串精确重复2次 类似地,{,}将重复左相

表达式
{,}
是如何工作的

我试着在SOF上搜索,甚至在google上搜索,甚至在bash的手册页上搜索,但我还没有找到对此的解释

通过摆弄表达式,我了解到它是某种字符串复制函数

echo{,} foo
>> echo echo foo
echo foo{,}
>> foo foo
这个表达式是如何工作的?这个有名字吗?另外,您能提供一个使用此函数的实际示例吗?

它被称为

这里有一个简单的解释

  • {,}
    将通过追加空字符串,将左相邻字符串精确重复2次
  • 类似地,
    {,}
    将重复左相邻字符串整整3次
  • var{A,B}
    将返回
    varA
    varB
这些例子应该更清楚地说明:

echo foo{,,}
foo foo foo

echo foo{,1}
foo foo1

echo foo{1,2}
foo1 foo2

echo foo{,,}
foo foo foo

echo foo{1,2,3}
foo1 foo2 foo3

的“正常”用例是重复一个字符串,其中子字符串由大括号中给出的列表的每个元素替换:

$ echo file.{txt,dat,log}
file.txt file.dat file.log
现在,如果列表元素之一为空,字符串将按原样打印:

$ echo file.{txt,dat,}
file.txt file.dat file.
这方面的一个常用用例是重命名文件

$ mv -v file.txt{,.bak}
'file.txt' -> 'file.txt.bak'
这将扩展到
mv-v file.txt file.txt.bak
,因为第一个列表元素为空


现在,如果所有元素都是空的,如
{,}
,那么字符串的打印次数与列表元素的打印次数相同。

它被称为“大括号扩展”
{,}
使用两个空字符串,这在我看来有点奇怪。
mkdir示例-{foo,bar,baz}.d
创建
示例foo.d
示例bar.d
示例baz.d
mv foo{.txt}
foo
重命名为
foo.txt
,而
mv foo{.txt,}
则相反。使用应该是不言而喻的。堕落案仍然有效。。。那么,为什么会有人故意不允许呢?