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