Linux bash while循环不退出也不响应

Linux bash while循环不退出也不响应,linux,bash,shell,terminal,while-loop,Linux,Bash,Shell,Terminal,While Loop,所以我有这个bash脚本 function exec_do(){ while [[ 1 ]]; do read _INPUT if [$_INPUT -eq "exit"] then break else echo $_INPUT fi done } 这样做的目的是,如果我输入exec_do,它就会执行while循环,读取输入并根据输入执行操作 如果输入为exit,则退出while循环 如果输入未退出,则会回显 但是,当我运行exec\u do 然后输入in

所以我有这个bash脚本

function exec_do(){
while [[ 1 ]]; do
  read _INPUT
  if [$_INPUT -eq "exit"]
  then
    break
  else
    echo $_INPUT
  fi
done
}
这样做的目的是,如果我输入exec_do,它就会执行while循环,读取输入并根据输入执行操作

如果输入为exit,则退出while循环

如果输入未退出,则会回显

但是,当我运行
exec\u do
然后输入
input
而是返回
input:command not found
此外,键入“exit”不会中断循环,也不会返回找不到的命令


我做错了什么?如何修复此问题?

您对
\u$INPUT
的比较是一个字符串,然后您需要
=
。如果比较整数,则需要
-eq
。如果字符串可能包含空格或元字符,请将
$\u INPUT
变量双引号引到字符串中

#!/bin/bash  

function exec_do(){ 
  while [[ 1 ]]; do  
    read _INPUT
    if[ "$_INPUT" == "exit" ]; then
      break
    else
      echo $_INPUT
    fi 
  done
  }

exec_do

很好的修复,特别是如果bash总是运行脚本的shell。如果需要更简单/更旧的shell的可移植性(比如ash或ksh),则可能需要更旧的语法:
[]]
而不是
[[]]
,没有
函数
关键字,
=
而不是
=
。由于OP将
bash
作为他的问题的标记,我假设他只使用了该shell。