我正在尝试创建一个文件层次结构来存储数据.我想为每个数据采集会话创建一个文件夹.该文件夹有五个子文件夹,如下所示.我下面的代码尝试给出了错误,但我不确定如何纠正它.
码
#!/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
Run Code Online (Sandbox Code Playgroud)
错误
我在声明变量时出错.如上所述,bash
翻转错误Command not found
.相反,如果我将文件名声明为TRACES = $('\Traces')
,则bash
翻转错误No such file or directory
.
删除变量名称和值之间的空格:
#!/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
Run Code Online (Sandbox Code Playgroud)
有了空格,bash
就像解释一样
COMMAND param1 param2
Run Code Online (Sandbox Code Playgroud)
与=
asparam1
我正在考虑修复的"变量赋值周围没有空格"部分.
使用数组表示法似乎有点矫枉过正.允许名称中可能的空格,您可以使用:
for dir in "$TRACE" "$LFPS" "$NOTES" "$PASS"
do mkdir "$dir"
done
Run Code Online (Sandbox Code Playgroud)
但即便如此也是浪费:
mkdir "$TRACE" "$LFPS" "$NOTES" "$PASS"
Run Code Online (Sandbox Code Playgroud)
如果您担心目录可能存在,则可以使用以下内容避免出现错误消息:
mkdir -p "$TRACE" "$LFPS" "$NOTES" "$PASS"
Run Code Online (Sandbox Code Playgroud)
-p
如果路径较长且某些中间目录可能丢失,则该选项也很有用.如果您确定名称中没有空格,则双引号变为可选(但它们是安全且便宜的,因此您可以使用它们).