在bash的参数太多错误 [英] Too many arguments error in bash
本文介绍了在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屋!
查看全文