无法将变量值传递给预置文件中的 curl 命令

无法将变量值传递给预置文件中的 curl 命令

这是我预先设置的 late_command:

di preseed/late_command 字符串 \
目标 IP=$(ifconfig eno1 | grep "inet\b" | awk '{print $2}'); \
目标内 curl -X post --data-urlencode 'playload={"text": "IP 地址是 '$IP'"}' https://hooks.slack.com/incoming-webhook-url

在 slack 频道中,它仅打印“IP 地址是”,不会打印 $IP 的值。如何将变量值传递给 slack?任何建议都将不胜感激。

答案1

你有$IP之间的变量单引号')。

这可以防止 shell 扩展。例如:

# Without quotes
echo $IP
> addr:192.168.1.1

尽管

# With quotes
echo '$IP'
> $IP

传递payload不带引号的字符串:

d-i preseed/late_command string \ 
in-target IP=$(ifconfig eno1 | grep "inet\b" | awk '{print $2}'); \ 
in-target curl -X post --data-urlencode playload={"text": "IP address is $IP"}

相关内容