0
我想知道是否有任何方法在bash中使用'find'命令进行测试。换句话说,我该如何去做一个条件语句来测试文件是否是用'find'找到的呢?Bash-使用'find'命令进行测试
要详细说明我的意思,我已经包含了下面的代码。其目的应:
- 找到用户
- 输入的目录中查找该目录中的文件,文件名由用户
- 输入查找该文件中的一句话,这也是由用户 输入
#!/bin/bash
#Task9.sh
cd/
echo "please enter a directory"
read direc
path= find home -depth -name "$direc"
if [ -z $path ]; then
echo "not a valid directory"
exit 1
else
cd $path
counter=3
while [ $counter -gt 0 ]; do
echo "enter a filename"
read FileName
FilePath= find $direc -depth -name "$FileName"
if [ -z $FilePath ]; then
break
else
let counter--
fi
done
if [ -z $FilePath ]; then
cd $FilePath
echo "input a word"
read SearchWord
echo "Found!"
grep $SearchWord $FileName
else
echo "No such file"
exit 2
fi
fi
exit 0
我对Bash非常陌生,所以我对任何容易犯的错误表示歉意。我不习惯解析语言。感谢任何帮助我的人,不胜感激
你需要使用'find'命令吗?你需要使用-z操作符吗?或者你可以使用其他命令和操作符? –
我可以使用其他运算符,我只是一般不知道如何测试目录中文件的不存在。 –
你的分配是错误的,在等号后面不能有空格,等号后面的内容将是一个文字字符串,显然你需要命令替换。 'path ='将变量设置为空字符串,'path = foo bar'运行命令'bar','path'临时设置为'foo';通常,你引用一个字面值,'path ='foo bar'或'path ='foo bar'“,但是这里你需要命令替换:'path = $(foo bar)'或旧式'path = \' foo bar \''运行'foo bar'命令并在'path'中捕获它的输出。 – tripleee