我有一堆相对较新的代码,即隐藏了很多错误,我有这样的代码:
if [ -d $DATA_ROOT/$name ]
,我已经完成研究并理解这意味着如果目录存在但现在我正在尝试打印出那些存在的目录以解决问题。
尝试使用
echo `First: $DATA_ROOT`
echo `Second: $name`
echo `Last: $DATA_ROOT/$name`
exit 1;
Got command not found for all,该代码旨在通过提取所有文件来修复我正在尝试修复的错误,但最终并没有提取所有文件,并以下面的数据提取失败错误结束,代码:
num_files=`find $DATA_ROOT/$name -name '*' | wc -l`
if [ ! $num_files -eq $extract_file ] ; then
echo "Data extraction failed! Extracted $num_files instead of $extract_file"
exit 1;
我只是想正确提取所有文件,请问如何做到这一点?
最佳答案
您使用的 back-ping 表示“将此作为命令执行”
echo `First: $DATA_ROOT`
echo `Second: $name`
echo `Last: $DATA_ROOT/$name`
将尝试执行名为“First:”的命令,该命令不存在。
而是使用双引号,因为它们允许变量替换,就像这样并且不会尝试将其作为命令执行
echo "First: $DATA_ROOT"
echo "Second: $name"
echo "Last: $DATA_ROOT/$name"
还有
find $DATA_ROOT/$name -name '*'
可能不是您想要的,-name '*'
是默认值,因此您不需要它。正如其他人指出的那样, find 将返回所有内容,包括目录和特殊文件(如果有的话)。 find "$DATA_ROOT/$name"-type f
如果您只想列出文件或 find "$DATA_ROOT/$name"-type d
如果你只想列出目录。也总是在你的 "$DATA_ROOT/$name"
周围使用双引号,因为它允许你处理带空格的文件名——如果你有一个包含空格的 $name
否则你会失败。
关于linux - 显示目录存在的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41078744/