在bash的参数太多错误 [英] Too many arguments error in bash

查看:1236
本文介绍了在bash的参数太多错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我写一个脚本,删除目录中的所有文件的做法。我使用引号我的变量,但我仍然收到以下错误:

I am writing a script to delete all files in a directory for practice. I am using quotes around my variables, and yet I am still getting the following error:

/usr/local/bin/deleteall: line 6: [: too many arguments
/usr/local/bin/deleteall: line 11: [: too many arguments 

下面是我的code:

#!/bin/bash
#Deletes all files in the current directory

read -p "You are about to delete all files in $(pwd). Are you sure you want to do this? y/n" yn
echo $yn
if [ [ "$yn" = "y" ] -o [ "$yn" = "Y" ] ] ; then
        for i in `ls`; do
                rm $i
        done
        exit;
elif [ [ "$yn" = "n" ] -o [ "$yn" = "N" ] ] ; then
        exit;
else
        read -p "Please enter y (yes) or n (no)"
        exit;
fi

这是整个输出:

You are about to delete all files in <my dir>. Are you sure you want to do this? y/nn
n
/usr/local/bin/deleteall: line 6: [: too many arguments
/usr/local/bin/deleteall: line 11: [: too many arguments
Please enter y (yes) or n (no)n

我在做什么错了?

What am I doing wrong?

推荐答案

此行​​似乎是问题:

if [ [ "$yn" = "y" ] -o [ "$yn" = "Y" ] ] ; then

您可以用替换此:

if [[ "$yn" == [yY] ]]; then

PS:做同样的,你检查线路 N或N

PS: Do same for the line where you check n or N.

这篇关于在bash的参数太多错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆