【发布时间】:2018-08-01 20:31:09
【问题描述】:
我很难理解为什么当我输入最随机的名称时,它们会被接受为目录。当一个 if 语句检查它是否是一个可读文件时,它对我输入的所有内容都说是。这里的目标是搜索一个目录,检查它是否是一个目录。然后在目录中搜索一个文件,然后在该文件中使用 forloops 搜索其中的单词。 while 循环是询问文件名 3 次。有点粗略,我只需要解释一下 if 语句不起作用
#!/bin/sh
DIR='/home/collin2/'
x=1
echo "Please enter directory"
read directory
for directory in "$DIR";
do
if [ -d "$directory" ];
then echo "This is a directory Please enter the file name"
read filename
while [ $x -le 3 ]; do
for filename in "$directory";
do
if [ -r "$filename" ]
then echo "The filename is readable"
echo "Please Enter a word "
read word
grep "$word" "$filename"
exit 1
fi
done
echo "Doesn't exist please try again"
read filename
x=`expr $x + 1`
done
#exit 1
fi
done
echo "not a directory"
退出 0
【问题讨论】:
-
当您遇到 shell 脚本问题时,最好的第一步是将您的代码剪切并粘贴到 shellcheck.net 并更正它识别的错误(重要)和警告(可能很重要)。如果您无法理解它的消息,或者您已经解决了所有问题但问题仍然存在,那么请来这里问一个人。
标签: shell for-loop search directory