如何在运行Shell脚本时摆脱“ = 0”文件的创建?

时间:2019-08-26 13:54:58

标签: shell

我有一个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

3 个答案:

答案 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