Shell
如何在序列的 shell 大括號擴展中使用 $variable?
我想
$var in
在 bash 中使用帶有範圍的 shell 大括號擴展。簡單地說{$var1..$var2}
是行不通的,所以我去了“橫向”……以下工作,但它有點kludgey。
# remove the split files echo rm foo.{$ext0..$extN} rm-segments > rm-segments source rm-segments
有沒有更“正常”的方式?
您可能想嘗試:
eval rm foo.{$ext0..$extN}
不確定這是否是最好的答案,但它肯定是一個。
正如您已經意識到的那樣,
{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
另一種可能。如果
foo.
不包含 shell 特殊字元,則為rm `seq $ext0 $extN | sed 's/^/foo./'`
最簡單的解決方案是使用zsh,
rm foo.{$ext0..$extN}
你想要什麼。