使用 busybox sh 将多行输出捕获到 Bash 变量中
Capturing multiple line output into a Bash variable with busybox sh
我正在尝试将 Debian Bash 脚本转换为 linux Busybox sh 脚本。我无法尝试转换以下命令:
read -r -d '' MESSAGE << EOM
Return code: $retn_code
Start of backup: $DATESTART
End of backup: $DATEEND
$(df -h | grep '/share/USB')
EOM
问题出在 Busybox 不可用的 read
的 -d 选项。如何将变量(在本例中为 $MESSAGE)设置为包含其他变量值的多行字符串?
输出 MESSAGE 进入日志文件和 sendmail 发送的消息中:
echo "RESULTS: $MESSAGE" >> $LOGFILE
sendmail -S smtp.server.com -f "$FROM" "$RECIPIENTS" <<EOF
subject:$SUBJECT
from:$FROM
$MESSAGE
EOF
最简单的答案是不使用读取。
MESSAGE=$(cat <<EOM
Return code: $retn_code
Start of backup: $DATESTART
End of backup: $DATEEND
$(df -h | grep '/share/USB')
EOM
)
MESSAGE=$( printf "%s\n%s\n%s\n%s\n" \
"Return code: $retn_code" \
"Start of backup: $DATESTART" \
"End of backup: $DATEEND" \
"$(df -h | grep '/share/USB')" \
)
您不需要任何特殊命令shell;只是一个常规作业。
message="Return code: $retn_code
Start of backup: $DATESTART
End of backup: $DATEEND
$(df -h | grep '/share/USB')
"
我正在尝试将 Debian Bash 脚本转换为 linux Busybox sh 脚本。我无法尝试转换以下命令:
read -r -d '' MESSAGE << EOM
Return code: $retn_code
Start of backup: $DATESTART
End of backup: $DATEEND
$(df -h | grep '/share/USB')
EOM
问题出在 Busybox 不可用的 read
的 -d 选项。如何将变量(在本例中为 $MESSAGE)设置为包含其他变量值的多行字符串?
输出 MESSAGE 进入日志文件和 sendmail 发送的消息中:
echo "RESULTS: $MESSAGE" >> $LOGFILE
sendmail -S smtp.server.com -f "$FROM" "$RECIPIENTS" <<EOF
subject:$SUBJECT
from:$FROM
$MESSAGE
EOF
最简单的答案是不使用读取。
MESSAGE=$(cat <<EOM
Return code: $retn_code
Start of backup: $DATESTART
End of backup: $DATEEND
$(df -h | grep '/share/USB')
EOM
)
MESSAGE=$( printf "%s\n%s\n%s\n%s\n" \
"Return code: $retn_code" \
"Start of backup: $DATESTART" \
"End of backup: $DATEEND" \
"$(df -h | grep '/share/USB')" \
)
您不需要任何特殊命令shell;只是一个常规作业。
message="Return code: $retn_code
Start of backup: $DATESTART
End of backup: $DATEEND
$(df -h | grep '/share/USB')
"