如果脚本中有两个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