在UNIX中创建多变量嵌套目录结构

在UNIX中创建多变量嵌套目录结构,unix,for-loop,terminal,fish,seq,Unix,For Loop,Terminal,Fish,Seq,正在尝试创建嵌套目录结构YEAR/FILE\u TYPE 所需的目录结构: ~/2016/doc ~/2016/pdf ~/2016/txt ~/2015/doc ~/2015/pdf ~/2015/txt 等等 使用以下内容创建按年份的变量: setvarYear(seq 1996 2016)#鱼壳语法 创建文件类型变量 设置varType(doc pdf txt)#鱼壳语法 第一次失败的尝试: 运行echo“mkdir/”$varDate/$varType 第二次失败的尝试: 对于$var

正在尝试创建嵌套目录结构
YEAR/FILE\u TYPE

所需的目录结构:

~/2016/doc
~/2016/pdf
~/2016/txt
~/2015/doc
~/2015/pdf
~/2015/txt
等等

使用以下内容创建按年份的变量: setvarYear(seq 1996 2016)#鱼壳语法

创建文件类型变量 设置varType(doc pdf txt)#鱼壳语法

第一次失败的尝试: 运行echo“mkdir/”$varDate/$varType

第二次失败的尝试: 对于$varDate中的i echo$i“/”$varType 结束#鱼壳语法


对于如何在for循环中将这两个变量组合在一起以创建目录结构,我们将不胜感激。

请从
fish
shell中的类似内容开始

这是
bash

ftypes=(doc pdf txt)
for year in $(seq 1996 2016)
do
    for ftype in ${ftypes[*]}
    do
        echo "mkdir -p $year/$ftype"
        #mkdir -p "$year/$ftype"
    done
done
只需将
echo
替换为
mkdir-p



格伦的回答很好,但实际上并不需要牙套。此外,括号用于子命令(类似于bash的
$()
)。因此,除非您打算运行名为
doc
的命令,否则
set varType(doc pdf txt)
中的参数不会执行您想要的操作。尝试使用fish独特的方式扩展具有多个值的变量:

set varYear (seq 1996 2016)
set varType doc pdf txt
mkdir -p $varYear/$varType
或者使用传统的循环结构:

for varYear in (seq 1996 2016)
    for varType in doc pdf txt
        mkdir -p $varYear/$varType
    end
end

阅读
fish
中的
循环。或者使用
bash
…感谢您的快速回复!不知道bash语法如何帮助使用fish的人,因为fish无法识别大多数bash语法。感谢bash的回答!初学者在这里-和价值的逻辑。我可以找到BASH-->FISH的语法转换示例;我找不到嵌套变量序列逻辑示例。对我来说,所有的回答都很好,我很感激。
for varYear in (seq 1996 2016)
    for varType in doc pdf txt
        mkdir -p $varYear/$varType
    end
end