我想创建一个文件层次结构来存储数据。我想为每个数据采集会话创建一个文件夹。该文件夹有五个子文件夹,这些文件夹命名如下。我的代码尝试下面给出了一个错误,但我不知道如何纠正它。使许多目录的shell脚本
代码
#!/bin/sh
TRACES = "/Traces"
LFPS = '/LFPS'
ANALYSIS = '/Analysis'
NOTES = '/Notes'
SPIKES = '/Spikes'
folders=($TRACES $LFPS $ANALYSIS $NOTES $SPIKES)
for folder in "${folders[@]}"
do
mkdir $folder
done
错误 我声明变量时得到一个错误。如上所述,bash
翻转错误Command not found
。相反,如果我声明文件名为TRACES = $('\Traces')
,bash
翻转错误No such file or directory
。
错误是由于空格(请参阅下面的答案)。你不需要循环:只需'mkdir“$ {folders [@]}”'很好。使用更多引号。无论如何,我无法确定所有这些变量。要小心,这些文件夹将在文件系统的根目录中创建,这是一个非常糟糕的主意。 –
@gniourf_gniourf:我打算修改路径。为了这个问题,我只是缩短了它。我正在定义变量,因为我正在进行博士研究,我的主管想要以某种方式命名文件夹。 (叹气) – mac389
要回答你的问题“为什么我会得到一个错误”,这是因为作业中应该读作TRACES =“/ Traces”的空格。除此之外,你的代码应该工作。请在循环中使用'mkdir“$ folder”'(用双引号'''),以防万一你的路径中有空格(如果你声称你没有空格,只要放引号就行了这是编程bash时可以获得的最好的习惯),另外,请用引号括起'folders =(“$ TRACES”“$ LFPS”“$ ANALYSIS”“$ NOTES”“$ SPIKES”)' –