Linux bash while循环不退出也不响应
所以我有这个bash脚本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
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。