【发布时间】:2019-08-27 21:55:45
【问题描述】:
我尝试遍历两个目录并使用此脚本回显具有给定扩展名的所有文件:
#!/bin/bash
FOLDERS=/sdd/DATA/ /sdc/storage/
for d in $FOLDERS; do
echo "$d"
FILES=$d*.txt
for f in $FILES; do
echo "$f"
done
done
但我没有让这个脚本工作! 我得到 bash: sdc/storage/ 是一个目录
【问题讨论】:
-
我希望你收到类似
-bash: /sdc/storage: is a directory的错误 -
...可以通过将
/sdd/DATA/ /sdc/storage/括在引号中来修复。 (没有,该行设置FOLDERS=/sdd/DATA/,然后尝试执行/sdc/storage/,这不起作用,因为--猜猜--这是一个目录。;-))更好的是请注意其中包含空格的文件名,并使用for ... in ...或使用find ... -exec ...执行“IFS 事情”。 -
@DevSolar, ...*could* 可以这样修复,但是将
FOLDERS定义为字符串而不是数组是非常糟糕的做法。首先针对最明显的问题,它会破坏您的目录名称带有空格的那一刻。