在busybox中,默认的shell是ash,所以bash中一些熟悉的技巧是不可用的。我想做的一件事是扩展一个字母列表,例如{a..z}
,它将扩展为a b c d e f g h i j k l m n o p q r s t u v w x y z
bash。有没有另一种方法来做这个灰?
在busybox中,默认的shell是ash,所以bash中一些熟悉的技巧是不可用的。我想做的一件事是扩展一个字母列表,例如{a..z}
,它将扩展为a b c d e f g h i j k l m n o p q r s t u v w x y z
bash。有没有另一种方法来做这个灰?
ash
shell 不支持大括号扩展。使用 Perl,你可以做
其中第一个
\n
(injoin()
) 可以替换为您选择的分隔符。如果您有可用的
jot
实用程序,POSIXly(和busybox)和基于ASCII的系统(我认为在EBCDIC系统上从来没有发现busybox):
将扩展到该字母列表,每行一个,因此假设您没有修改
$IFS
,将是一种将该列表作为单独参数传递给
cmd
. 就像你对ksh93
//的那样zsh
。bash
cmd {a..z}
这几乎没有改善
尽管。为了能够做 的等价物
foo{a..z}bar
,您可以定义一个:而是将其称为:
您可以通过执行以下操作来扩展这种方法:
然后做:
(虽然后者也可以写
seq -w 0004
)seq
不是 POSIX 命令,但busybox
确实附带了它。请注意,busybox默认
sh
基于,ash
但也可以在构建时配置为使用hush
支持大括号扩展的基于 - 的 shell。但这只是 csh-style{a,b}
,而不是 zsh-style{1..10}
,{a..z}
或者在 ksh93/zsh/bash 中找到的更高级的形式。如果您的 Busybox 安装带有
hush
shell,您可以使用它。它支持大括号扩展。