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