Có ai biết cách sử dụng chuyển hướng tài liệu ở đây trên công thức không?Công thức Makefile với chuyển hướng tài liệu tại đây
test:
sh <<EOF
echo I Need This
echo To Work
ls
EOF
tôi không thể tìm thấy bất kỳ giải pháp cố gắng phương pháp xuyệc ngược thông thường (mà về cơ bản kết thúc bằng một lệnh trong một dòng duy nhất).
Lý do:
Tôi có một tập hợp các công thức nấu ăn nhiều đường mà tôi muốn để proxy thông qua lệnh khác (ví dụ, sh, Docker).
onelinerecipe := echo l1
define twolinerecipe :=
echo l1
echo l2
endef
define threelinerecipe :=
echo l1
echo l2
echo l3
endef
# sh as proxy command and proof of concept
proxy := sh
test1:
$(proxy) <<EOF
$(onelinerecipe)
EOF
test2:
$(proxy) <<EOF
$(twolinerecipe)
EOF
test3:
$(proxy) <<EOF
$(threelinerecipe)
EOF
Giải pháp tôi muốn tránh: chuyển đổi macro nhiều dòng thành một dòng.
define threelinerecipe :=
echo l1;
echo l2;
echo l3
endef
test3:
$(proxy) <<< "$(strip $(threelinerecipe))"
Công trình này (tôi sử dụng gmake 4.0 và bash làm vỏ) nhưng yêu cầu thay đổi công thức và tôi có rất nhiều. Dải xóa các dòng mới, khỏi macro, sau đó mọi thứ được viết trong một dòng.
mục tiêu cuối cùng của tôi là: proxy := docker run ...
Làm thế nào về sh -c ''đặt lệnh của bạn ở đây''? – fanton
Có thể trùng lặp của [Heredoc trong một Makefile?] (Http://stackoverflow.com/questions/5873025/heredoc-in-a-makefile) – e0k
@ e0k Tôi đã thêm ngữ cảnh –