read
スクリプトに2つのコマンドがあり、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