【发布时间】:2013-08-07 13:49:12
【问题描述】:
我想在某个目录中查找所有 *.sh 文件,但是脚本中有一些错误...
#!/bin/sh
for plik in /var/panel/starter/*
do
if [ $(basename "$plik") != "priority" ] && [ $(basename "$plik") != "PRIORITY" ]
then
for plik in $plik/*
do
filename=$(basename "$plik")
extension="${filename##*.}"
filename="${filename%.*}"
if [ "$extension" == "sh" ]
then
echo $plik
fi
done
fi
done
/var/panel/starter 中有一些文件夹,这些文件夹中有 shell 脚本,这就是我使用 for 循环两次的原因。
这是错误:
[: 19: *: unexpected operator
[: 19: sh: unexpected operator
[: 19: sh: unexpected operator
[: 19: sh: unexpected operator
[: 19: *: unexpected operator
我猜问题出在空文件夹上,例如:
/var/panel/starter/cs16/*
我不知道如何处理。
【问题讨论】:
-
你可以
find -name "*.sh"吗?如果你想做一些过滤,你可以使用-regex或将输出传送到grep。或者我误解了你的要求 -
/var/panel/starter/*.sh? -
这只是一个例子。稍后我想执行该脚本。不是 echo $plik,而是 sh $plik。如果没有
if [ "$extension" == "sh" ]条件,它也会执行/var/panel/starter/cs16/*,我试图避免这种情况。 @devnull,它不起作用。