【发布时间】:2019-03-19 07:53:24
【问题描述】:
我的 Bash 脚本的逻辑存在错误。我有一个数组,包含数字、大写和小写值,我试图循环并根据数组值创建文件。所有数字文件都被创建,小写文件也是如此,但大写文件不会被创建。
我尝试使用bash +x scriptname.sh 调试脚本,这表明文件已创建,但它们没有出现在目录中。我还做了一个echo "${LETTERNUM[k]}",它表明循环正在迭代正确的次数。
附带问题,有没有更清洁的方法来做到这一点?我觉得${LETTERNUM[k]} 的反复调用可能不是最好的——有没有不同/更好的方法来打印 8 次?而且我确信还有其他方法,例如touch{a..z} 来生成文件,但我需要该数组用于脚本的另一部分。
#!/bin/bash
declare -a LETTERNUM=("a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z" "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S" "T" "U" "V" "W" "X" "Y" "Z" "1" "2" "3" "4" "5" "6" "7" "8" "9" "0");
for (( k=0; k<=61; k++ ))
do
> "${LETTERNUM[k]}${LETTERNUM[k]}${LETTERNUM[k]}${LETTERNUM[k]}${LETTERNUM[k]}${LETTERNUM[k]}${LETTERNUM[k]}${LETTERNUM[k]}".txt
done
【问题讨论】:
-
"文件已创建,但没有出现在目录中" 什么意思?
-
当我在脚本上运行 bash +x 命令时——无论是使用触摸还是 >——它都会显示输出,例如“触摸 MMMMMMMM.txt”。尽管有小写文件和数字文件,但该目录中不存在大写文件。
-
也许您在使用不区分大小写的文件系统的 Mac 上?
-
我正在通过 Vagrant 运行 Ubuntu 映像,但我的主机是 MacOS。也许是因为它是一个共享目录?
-
因为共享目录!我将它从那里移出并重新运行,所以它完全在 Ubuntu 映像上,并且可以正常工作。谢谢@MarkSetchell