根据变量的值创建多个目录

Dar*_*lyn 1 unix shell scripting

我有变量“一”,其中包含以下内容

avi,mkw,dvd,cd
Run Code Online (Sandbox Code Playgroud)

我试图动态创建看起来像这样的目录

type-avi
type-mkw
type-dvd
type-cd
Run Code Online (Sandbox Code Playgroud)

我试图用以下代码达到想要的结果

mkdir type-{"$one"}
Run Code Online (Sandbox Code Playgroud)

但它没有创建 4 个目录,而是创建了一个名为

type-{avi,mkw,dvd,cd}
Run Code Online (Sandbox Code Playgroud)

我想这是错误的方法..如果是这样,我如何动态创建带有存储在变量中的“后缀”的目录?

Eta*_*ner 5

为此,请使用数组而不是字符串变量。

IFS=, read -a onearr <<<"$one"
mkdir "${onearr[@]/#/type-}"
Run Code Online (Sandbox Code Playgroud)

或者,如果您$one首先不需要字符串,只需手动创建数组。

onearr=(avi mkw dvd cd)
mkdir "${onearr[@]/#/type-}"
Run Code Online (Sandbox Code Playgroud)

如果您不担心空格或值中的任何内容,$one并且可以相信您的输入是“安全的”而不是剥削性的并且无法使用,read那么您可以使用它来创建数组(但它只是一个更糟的解决方案)。

onearr=($(tr , ' ' <<<"$one"))
Run Code Online (Sandbox Code Playgroud)