我的Shell脚本中出现了一些问题,我编写了一个非常短的示例,但没有得到预期的输出,我在case
语句中使用了if
条件,但出现了一些故障。
我的问题是
当我按下2
,然后用户应该给予路径首先搜索文件,如果没有给路径,然后我会在默认路径中寻找,因为我已经提到,但我不能在这里得到这个功能,有人能帮助我在这方面吗?请我会感谢您的帮助:)
我的密码是:
#!/bin/bash
trap '' 2
while true
do
clear
echo -e " \t *******************************************************************"
echo -e " \t ******************** TEST-MENU ********************************"
echo -e "\t *******************************************************************"
echo -e "\n"
echo -e "\t\t 1)Show Date/Time"
echo -e "\t\t 2)File-Search"
echo -e "\t\t e)End \n"
echo -e "\t\t Select your choice:\c" ; read answer
echo -e "\t*******************************************************************"
case $answer in
1)date +'%y%m%d %H:%M:%S' ;;
2)echo -e "Please give your dir:\c" ; read directory
if [ "$directory" = "" ] then
$directory = "[/test/sample/]" fi
echo -e "Enter your file [$directory]:\c" ; read search
find "$directory" -name "*$search*" -type f -print|xargs ls -l ;;
e) exit ;;
esac
echo -e "Enter return to continue \c"
read answer
done
2条答案
按热度按时间ct2axkht1#
几个问题:
$目录="[/测试/样品/]"文件
赋值时不使用$,因此应该使用like
目录="[/测试/样品/]"文件
$目录="[/测试/样品/]"文件
你为什么需要方括号?你在做ls [/test/sample]吗?把它去掉就行了。
如果["$目录"=""]
如果用户只是按Enter键,那么它不会工作,因此您应该这样做:
如果["X $目录"="X"]
查找"$目录"-名称"*$搜索 *"-键入f-执行ls-l {};
hujrc8aj2#
下面是一个编辑了格式并添加了注解的例子,你需要测试一下搜索文件名是否为null,就好像它不存在一样,它显示的是当前目录中的文件: