Tôi đã sử dụng mẫu dưới đây để in các tin nhắn đa dòng đến thiết bị đầu cuối trong một tập lệnh bash.
read -d '' message <<- EOF
this is a
mulitline
message
EOF
echo "$message"
Điều này đã hoạt động - cho đến một vài ngày trước, mô hình chỉ ngừng hoạt động. Bằng cách ngừng hoạt động, ý tôi là khi bash gặp phải các biểu thức di truyền này trong kịch bản - nó dường như không làm gì cả - không có đầu ra.
Điều duy nhất mà tôi có thể nghĩ về điều đó đã thay đổi trong vài ngày qua là môi trường mà các tập lệnh được chạy bên trong là USB sống 14.04, so với cài đặt "đầy đủ".
Sau đó, tôi phát hiện ra rằng khi tôi di chuyển di sản trước khi set -o errexit
tuyên bố kịch bản, nó bắt đầu hoạt động trở lại. tức là nó không hoạt động
#!/bin/bash
set -o errexit
read -d '' message <<- EOF
this is a
mulitline
message
EOF
echo "$message"
kết quả: (không có gì)
Nhưng điều này không hoạt động
#!/bin/bash
read -d '' message <<- EOF
this is a
mulitline
message
EOF
echo "$message"
kết quả
$ sudo ./script.sh
this is a
mulitline
message
- bash - đảo ngược -
GNU bash, version 4.3.11(1)-release (i686-pc-linux-gnu)
\0
không phải là chuỗi rỗng.