Bash脚本不起作用:找不到命令

zeu*_*unk 1 linux bash shell terminal

我正在尝试创建一个简单的shell脚本来列出第一个输入6次,一行,然后报告第二个输入的大小.这是我的脚本:

#!/bin/sh

#  script1.sh
#  
#
#  $1=filename $2=number

i=0

while [$i -lt 7]    #line 11
do
  i=$(($i + 1))
  echo $1
done

printf "\n"

if [$2 -gt 1000]     #line 19
then
  echo 'This is a big number!'
else
  echo 'This is a small number.'
fi
Run Code Online (Sandbox Code Playgroud)

以下是我在尝试使用时收到的错误:

./script1.sh test 131234 ./script1.sh:line 11:[0:命令未找到

./script1.sh:line 19:[131234:命令未找到这是一个小数字.

我认为它部分有效,但有关命令-lt和-gt的信息导致错误.在Linux和终端(OS X)上运行会提供相同的错误.

fed*_*qui 8

你的[]条件需要空格:

if [ $2 -gt 1000 ]     #line 19
    ^           ^
Run Code Online (Sandbox Code Playgroud)

while [ $i -lt 7 ]    #line 11
       ^        ^
Run Code Online (Sandbox Code Playgroud)

代替

if [$2 -gt 1000]     #line 19
Run Code Online (Sandbox Code Playgroud)

while [$i -lt 7]    #line 11
Run Code Online (Sandbox Code Playgroud)

请注意,否则它不会考虑这些表达式.相反,它将它们理解为一个名为[$2或的字符串[$i.