在 nohup 模式下运行时如何为脚本中的读取命令提供值。前任。在体内

在 nohup 模式下运行时如何为脚本中的读取命令提供值。前任。在体内

如果脚本中有两个read命令并且必须在nohup模式下运行,那么如何使用 echo 命令给出值。

例如。脚本:

#!/bin/sh 
echo "/n read the value1" 
read info1 
echo "/n read the value2" 
read info2
 echo "$info1 $info2">>log.txt 

我必须运行此nohup模式,然后如何提供要读取的值。

答案1

这实际上是可能的。你可以这样做:

nohup sh -c "printf 'foo\nbar\n' | myScript.sh"

这将通过foobar作为输入。


但不要这样做。只是不要使用read。事实上,我什至想不出什么好的理由曾经read在脚本内部使用。我确信在某些边缘情况下这是必要的,但您应该尽可能避免它。让用户输入数据很麻烦,容易出错,并且无法实现脚本的自动化。

因此,只需更改脚本以从命令行读取数据:

#!/bin/sh 
info1="$1"
info2="$2"
 echo "$info1 $info2">>log.txt 

然后,使用您想要的任何参数作为参数运行脚本:

myScript.sh foo bar

或者

myScript.sh 'this one has spaces!' bar

相关内容