![在 nohup 模式下运行时如何为脚本中的读取命令提供值。前任。在体内](https://linux22.com/image/160603/%E5%9C%A8%20nohup%20%E6%A8%A1%E5%BC%8F%E4%B8%8B%E8%BF%90%E8%A1%8C%E6%97%B6%E5%A6%82%E4%BD%95%E4%B8%BA%E8%84%9A%E6%9C%AC%E4%B8%AD%E7%9A%84%E8%AF%BB%E5%8F%96%E5%91%BD%E4%BB%A4%E6%8F%90%E4%BE%9B%E5%80%BC%E3%80%82%E5%89%8D%E4%BB%BB%E3%80%82%E5%9C%A8%E4%BD%93%E5%86%85.png)
如果脚本中有两个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"
这将通过foo
并bar
作为输入。
但不要这样做。只是不要使用read
。事实上,我什至想不出什么好的理由曾经read
在脚本内部使用。我确信在某些边缘情况下这是必要的,但您应该尽可能避免它。让用户输入数据很麻烦,容易出错,并且无法实现脚本的自动化。
因此,只需更改脚本以从命令行读取数据:
#!/bin/sh
info1="$1"
info2="$2"
echo "$info1 $info2">>log.txt
然后,使用您想要的任何参数作为参数运行脚本:
myScript.sh foo bar
或者
myScript.sh 'this one has spaces!' bar