我想在某个目录中找到所有的*.sh文件,但是脚本中存在一些错误...
在 /var/panel/starter 目录下有一些文件夹,在这些文件夹中有 shell 脚本,因此我使用了两次 for 循环。
以下是错误信息:
我猜问题出在空文件夹上,比如:
#!/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/*
我不知道如何处理这个问题,这与IT技术有关。
find -name "*.sh"
吗?如果你想要进行一些筛选,你可以使用-regex
或将输出通过管道传递给grep
。或者我误解了你的需求。 - Kent/var/panel/starter/*.sh
? - devnullif [ "$extension" == "sh" ]
条件,它也会执行/var/panel/starter/cs16/*
,我正在尝试避免这种情况。 @devnull,它不起作用。 - Filip Frątczak