我正在编写一个脚本来删除目录中的所有文件以进行练习.我在我的变量周围使用引号,但我仍然收到以下错误:
/usr/local/bin/deleteall: line 6: [: too many arguments
/usr/local/bin/deleteall: line 11: [: too many arguments
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
#!/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
Run Code Online (Sandbox Code Playgroud)
这是整个输出:
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
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
这条线似乎有问题:
if [ [ "$yn" = "y" ] -o [ "$yn" = "Y" ] ] ; then
Run Code Online (Sandbox Code Playgroud)
您可以将其替换为:
if [[ "$yn" == [yY] ]]; then
Run Code Online (Sandbox Code Playgroud)
PS:对你检查的行做同样的事n or N.
| 归档时间: |
|
| 查看次数: |
5838 次 |
| 最近记录: |