我有一个shell脚本,询问用户当前工作目录中有多少个文件。
我已经在桌面位置创建了脚本,当我运行该脚本时,它可以正常工作,但是当我将其复制并粘贴到任何其他文件夹中时,如果尝试运行,它将创建一个名称为“ = 0”的文件
我也发布了该脚本,任何人都可以帮助我解决此问题。
#!/bin/bash
numfiles=$(ls | wc -l)
try=1
read -p "Guess the number of files present in the directory: : " num_dir
while [ $num_dir>=0 ]
do
if [ $try != 1 ]
then
read -p "Guess the number of files present in the directory: : " num_dir
fi
if [ $num_dir == $numfiles ]
then
exit
elif [ $num_dir -gt $numfiles ]
then
echo "num_dir is greater than numfiles"
else
echo "num_dir is less than numfiles"
fi
try=0
done
答案 0 :(得分:1)
错误发生在while [ $num_dir>=0 ]
中,该条件将$num_dir
的“输出”重定向到文件=0
。
您需要
while [ $num_dir -ge 0 ]
或特定于Bash的
while [[ $num_dir >= 0 ]]
答案 1 :(得分:1)
test
没有>=
运算符;它被解析为输出重定向,等效于
[ $num_dir > =0 ]
或
[ $num_dir ] > =0
(在识别命令参数之前,操作员可以识别重定向)。
对于数值比较,请使用-ge
:
# Quote to avoid a syntax error if num_dir has an empty value
[ "$num_dir" -ge 0 ]
答案 2 :(得分:0)
使用:
while true
这样您就不会得到不需要的文件,用户输入也可以是0,这将结束循环,并且您可以摆脱try