Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
bash中的read命令在与不同用户的操作中不等待_Bash_Shell - Fatal编程技术网

bash中的read命令在与不同用户的操作中不等待

bash中的read命令在与不同用户的操作中不等待,bash,shell,Bash,Shell,我通过bash B中的不同用户调用bash A,就像这样,我想一直保持在“*”线上,直到用户进入“退出” #bash B su test使用if语句将不会继续检查输入是否为“exit”,它只会检查一次 您可以使用直到循环来确保用户输入为“退出” 您可以使用$查找发送到后台的最新命令的进程 background command & pid=$! until [[ $LINE == exit ]]; do read LINE done && { kill -9 $pi

我通过bash B中的不同用户调用bash A,就像这样,我想一直保持在“*”线上,直到用户进入“退出”

#bash B

su test使用
if
语句将不会继续检查输入是否为“exit”,它只会检查一次

您可以使用
直到
循环来确保用户输入为“退出”

您可以使用
$查找发送到后台的最新命令的进程

background command &
pid=$!
until [[ $LINE == exit ]]; do
    read LINE
done && { kill -9 $pid; exit; }

您正在从here文档重定向
su
的标准输入。
su
运行的命令将从
su
继承其标准输入,因此它也是here文档,而不是终端。由于
su
在读取要运行的命令时会消耗整个here文档,因此
bashA.sh
无法读取,因此
read
命令会立即失败,而不是等待输入


如果需要解决方法,您需要发布更多关于您实际尝试执行的操作的详细信息。

如果我在没有su测试的情况下运行bashA.sh
background command &
pid=$!
until [[ $LINE == exit ]]; do
    read LINE
done && { kill -9 $pid; exit; }