如果我使用bash's 大括号扩展,我会得到一个列表
echo item={one,two,three}
item=one item=two item=three
Run Code Online (Sandbox Code Playgroud)
假设我在一个包含与通配符匹配的文件/文件夹的目录中,有没有办法让扩展与这些文件/文件夹匹配?
ls
blue green red
echo item=* # Obviously not
item=*
echo item={*} # Maybe? ...but no
item={*}
Run Code Online (Sandbox Code Playgroud)
在我的例子中,我希望扩展是 item=blue item=green item=red
我得到的最好的就是这样的代码
items=()
for dirent in *; do items+=("item=$dirent"); done
echo "${items[@]}"
item=blue item=green item=red
Run Code Online (Sandbox Code Playgroud)
您可以将当前目录的文件存储在一个数组中,如下所示:
items=(*)
Run Code Online (Sandbox Code Playgroud)
然后可以使用参数扩展来添加前缀:
printf "%s\n" "${items[@]/#/item=}"
Run Code Online (Sandbox Code Playgroud)
您可以使用它来更新数组:
items=("${items[@]/#/item=}")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
314 次 |
| 最近记录: |