bash&;对于循环中的最后一个命令
我刚刚编写了我的第一个bash脚本,用于在开发服务器上启动一些redis实例。虽然它大部分工作正常,但最后一个打开的redis实例正在阻止活动终端–尽管我有尾随的bash&;对于循环中的最后一个命令,bash,Bash,我刚刚编写了我的第一个bash脚本,用于在开发服务器上启动一些redis实例。虽然它大部分工作正常,但最后一个打开的redis实例正在阻止活动终端–尽管我有尾随的&符号,其他启动的实例没有阻止终端。我怎样才能把它们都推到后台呢 以下是脚本: #!/bin/bash REDIS=(6379 6380 6381 6382 6383 6390 6391 6392 6393) for i in "${REDIS[@]}" do : redis-server --port $i &
&
符号,其他启动的实例没有阻止终端。我怎样才能把它们都推到后台呢
以下是脚本:
#!/bin/bash
REDIS=(6379 6380 6381 6382 6383 6390 6391 6392 6393)
for i in "${REDIS[@]}"
do
:
redis-server --port $i &
done
听起来你的终端并没有被阻止,你的提示被覆盖了。这纯粹是一个表面问题。由于终端的工作方式,bash不知道如何重新绘制它,因此看起来该命令位于前台 再次运行脚本,然后盲目键入
ls
Enter。您可能会看到shell响应正常,即使您看不到提示
您也可以直接按Enter键让bash重新绘制提示。听起来您的终端实际上没有被阻止,您的提示只是被覆盖了。这纯粹是一个表面问题。由于终端的工作方式,bash不知道如何重新绘制它,因此看起来该命令位于前台 再次运行脚本,然后盲目键入
ls
Enter。您可能会看到shell响应正常,即使您看不到提示
你也可以点击回车键让bash重新绘制提示。整个脚本仍然需要完成-你是否使用
/scriptname&
运行它?另外,我想,在标题和文本中键入$
,而不是&
。啊,不,我没有-就这些?只需添加尾随的&
?好吧,它有效吗?:)哦,:
是干什么的?它什么也没做。整个脚本还需要完成-你用/scriptname&
运行它吗?而且,我想,在标题和文本中键入$
而不是&
。啊,不,我没有-就这些?只需添加尾随的&
?好吧,它有效吗?:)哦,:
是干什么的?这没什么用。谢谢你的解释,这很有趣。键入ls
实际有效。出于好奇,我可以在脚本中做些什么来重新绘制吗?您可以将服务器输出重定向到/dev/null
或日志文件,这样它就不会与shell竞争了。或者,如果服务器启动时只输出一点数据,您可以在循环后添加sleep 3
,并希望它们在不到三秒钟后停止写入。谢谢您的解释,这很有趣。键入ls
实际有效。出于好奇,我可以在脚本中做些什么来重新绘制吗?您可以将服务器输出重定向到/dev/null
或日志文件,这样它就不会与shell竞争了。或者,如果服务器在启动时只输出一点数据,您可以在循环后添加sleep3
,并希望它们在不到三秒钟后停止写入。