Pet*_*r.O 46 shell bash brace-expansion
我想$var in在 bash 中使用带有范围的 shell 括号扩展。简单地放置{$var1..$var2}不起作用,所以我去了“横向”......
以下工作,但它有点笨拙。
# remove the split files
echo rm foo.{$ext0..$extN} rm-segments > rm-segments
source rm-segments
Run Code Online (Sandbox Code Playgroud)
有没有更“正常”的方式?
aso*_*ove 46
您可能想尝试:
eval rm foo.{$ext0..$extN}
Run Code Online (Sandbox Code Playgroud)
不确定这是否是最佳答案,但肯定是最佳答案。
Gil*_*il' 25
正如你已经意识到,{1..3}扩大到1 2 3,但{foo..bar}还是{$foo..$bar}不触发括号展开,而后者随后被扩大,以取代$foo和$bar它们的值。
GNU(例如非嵌入式Linux)的后备是seq命令。
for x in `seq $ext0 $extN`; do rm foo.$x; done
Run Code Online (Sandbox Code Playgroud)
另一种可能性。如果不foo.包含外壳特殊字符,则为
rm `seq $ext0 $extN | sed 's/^/foo./'`
Run Code Online (Sandbox Code Playgroud)
最简单的解决方案是使用zsh,rm foo.{$ext0..$extN}你想要的在哪里。
| 归档时间: |
|
| 查看次数: |
19707 次 |
| 最近记录: |