将多个用户输入转换为mkdir参数以创建多个文件夹-Bash脚本

将多个用户输入转换为mkdir参数以创建多个文件夹-Bash脚本,bash,input,directory-structure,Bash,Input,Directory Structure,我想使用用户输入创建多个文件夹。例如,如果用户编写了java,python,react,那么我要查找的结果分别是文件夹java,python和react。但实际情况是,创建了一个名为{java,python,react}的文件夹。逗号不再被识别 ##代码 阅读-p“外部项目:外部项目” mkdir-p{$EXTERNAL_PROJECTS} 它不起作用,因为大括号扩展是在参数扩展之前执行的。也就是说,展开参数EXTERNAL\u PROJECTS后,不会重新扫描结果字符串以进行大括号展开。解决此

我想使用用户输入创建多个文件夹。例如,如果用户编写了
java,python,react
,那么我要查找的结果分别是文件夹
java
python
react
。但实际情况是,创建了一个名为
{java,python,react}
的文件夹。逗号不再被识别

##代码
阅读-p“外部项目:外部项目”
mkdir-p{$EXTERNAL_PROJECTS}

它不起作用,因为大括号扩展是在参数扩展之前执行的。也就是说,展开参数
EXTERNAL\u PROJECTS
后,不会重新扫描结果字符串以进行大括号展开。解决此问题的一种方法是使用阵列:

IFS=',' read -r -p "External projects: " -a EXTERNAL_PROJECTS

mkdir -p "${EXTERNAL_PROJECTS[@]}"

谢谢你,内贾特。为了解决我的问题,我使用for循环来迭代数组。@bmalbusca当然,如果每个项目都有更复杂的任务,那么应该使用这样的循环<“${EXTERNAL_PROJECTS[@]}”中项目的代码>;做完成。但是对于简单的
mkdir
,不需要循环。顺便说一下,
“${EXTERNAL_PROJECTS[*]}”
在原始答案中是错误的。现在更新。正确的是
“${EXTERNAL_PROJECTS[@]}”