我尝试去路径并删除以collectorlist*
开头的文件,所以我编写了如下所示的shell脚本。但是-e选项总是提供未找到的输出。请建议我。
脚本
if [ -d "/abc" ] ; then
for c in `ls -1 "/abc/"`; do
if [ -d "/abc/${c}" ] ; then
if [ -d "/abc/${c}/dynatrace/agent/linux-x86-64/agent/conf/" ] ; then
if [ -e "/bxp/${c}/dynatrace/agent/linux-x86-64/agent/conf/collectorlist* " ] && echo "Found" || echo "Not found" ; then
`ls -ltr "sat.txt"` > /users/home/abc/test.txt
fi
fi
fi
done
fi
答案 0 :(得分:1)
您的代码存在一些问题。
ls
命令需要提供一个命令的名称,然后执行该命令。我想你不想要那个。只需删除反引号,您可能只想执行ls
并将其输出重定向到文件中。[ -e pattern* ]
进行此操作。 pattern*
评估一个或多个文件名或(不存在)pattern*
本身(除非您调整shell以表现不同)。问题是许多值的情况。这些会在您的[ ... ]
表达式中出现问题。结果:
if [ -d "/abc" ] ; then
for c in $(ls -1 "/abc/"); do
if [ -d "/abc/${c}/dynatrace/agent/linux-x86-64/agent/conf/" ] ; then
if ls "/bxp/${c}/dynatrace/agent/linux-x86-64/agent/conf"/collectorlist* &> /dev/null; then
echo "Found"
ls -ltr "sat.txt" > /users/home/abc/test.txt
else
echo "Not Found"
fi
fi
done
fi