当我们使用shell扩展时,它会在一行中提供所有扩展的单词.例如:
#!/bin/bash
data="Hello\ {World,Rafi}"
eval echo $data
Run Code Online (Sandbox Code Playgroud)
这会产生以下输出:
Hello World Hello Rafi
Run Code Online (Sandbox Code Playgroud)
可以像这样在单独的一行输出每一行吗?
Hello World
Hello Rafi
Run Code Online (Sandbox Code Playgroud)
如果我理解你正确,你想使用大括号扩展生成多个单词({...}),然后在单独的行上打印每个单词.
如果您不必绝对存储"Hello\ {World,Rafi}"在变量中,则可以使用printf shell-builtin
printf "%s\n" "Hello "{Rafi,World}
Run Code Online (Sandbox Code Playgroud)
%s\n重复使用格式字符串(此处为:),直到所有参数printf都用完为止(参考).
%s\n 消耗1个参数"Hello "{Rafi,World}返回2个单词/参数即"Hello Rafi"和"Hello World"所以这 printf命令相当于
printf "%s\n%s\n" "Hello Rafi" "Hello World"
Run Code Online (Sandbox Code Playgroud)
除了你不必输入所有这些.