试图使以下命令查找完整的好名称正常工作,但我现在不能。
我用来查找文件“Lista*”的命令:
PathFileIN_Elab=/root/Testms/Files
ChkFileName="$(ls -1 -f $PathFileIN_Elab/"$line"* |xargs basename)"
[ -f "${ChkFileName}" ] && echo "File exist"; echo "Err: $?"; NomeFil="${ChkFileName}" || echo "File does not exist"; echo "Err: $?"
echo ValNomeFileFullExt: "${ChkFileName}"
文件“Lista*”存在时的结果:
错误:1
错误:0
ValNomeFileFullExt:Lista.txt
++ 我没有看到我的任何文件回声存在或不存在,但两种情况下的返回码“err”......为什么?
文件“Lista*”不存在时的结果:
ls: 不可能加入 /root/Testms/Files/Lista*: 没有这样的文件或目录 basename: 缺少操作数
Usare `basename --help' per ulteriori informazioni。
错误:1
错误:0
ValNomeFileFullExt:
++ 不存在文件的回声 + 像以前一样返回代码加上基本名称消息
我要做的是对文件名进行良好检查(如果存在扩展名)并将其设置为我在检查后需要的 var,因此:
a)因此,如果文件存在,我将使用全名设置 var:NomeFil="${ChkFileName}"
b)如果文件不存在,我想运行一个命令(现在在测试中它只是一个回声)。
有人可以帮助我吗?我是 bash 脚本的新手。
提前致谢。
使用匹配时,您可以期望返回零个或多个答案,因此最好使用
for
循环一次测试一个对象,否则会破坏您的-f
测试语句。