이런 heredoc 명령을 보내고 싶습니다
cat <<EOF
line 1
line 2
EOF
배경. (실제 명령에는 openssl
입력 줄이 많아 완료하는 데 시간이 걸립니다.)
exec
PHP에서 실행할 수 있도록 명령을 문자열로 저장해야 합니다 .
단순히 & 기호를 추가하면 작동하지 않습니다.
cat <<EOF
line 1
line 2
EOF &
내가 시도한 다른 조합(명령을 대괄호 안에 넣는 등)도 작동하지 않습니다.
어떻게?
답변1
여기서 -doc 연산자( <<EOF
, 여기)는 일반적인 리디렉션 연산자일 뿐이며, 그 뒤에 오는 내용(같은 줄!)은 여전히 명령의 일부입니다.
예를 들어
# from here-doc to file
cat <<EOF > foo.txt
...
EOF
# here-doc and some arguments to cat
cat <<EOF -n foo.txt
...
EOF
# two here-docs!
cat /dev/fd/3 /dev/fd/4 3<<EOF 4<<EOF
first
EOF
second
EOF
따라서 파일에서 리디렉션하는 것과 동일한 작업을 수행하여 명령줄 &
끝에 다음을 입력합니다 cat
.
cat <<EOF &
here-doc text
EOF