我的shell脚本中有一个提示,用户可以在其中选择一个目录。我试图这样做,如果该目录中存在.gz文件,它们将退出循环,如果没有,则再次要求用户选择一个目录,但它只是不起作用。这是我到目前为止所做的:
ls -d */
while :
do
echo "Which Directory do you want to access?"
read input_variable1
cd $input_variable1
if [ CHECK FOR .gz ]
then
break
else
ls -d */
echo "no .gz files to unzip. Try again."
fi
done
答案 0 :(得分:1)
测试支持使用通配符,因此如果有一个文件匹配[ -f *.gz ]
,则*.gz
将为true(否则为false) - 正如@tripleee所指出的,这将因多个匹配而失败;请参阅下面的更好的变种)。
另一种可能性是使用if ls *.gz &>/dev/null; then ...; else ...; fi
(不会抛出任何错误)。