0

我正在使用只有busybox(ash?)并且不支持bash的设备。但是,我需要在它上面运行下面的 bash 脚本。有可能还是busybox根本不支持脚本?

#!/bin/bash

domain="mydomain.com"
record="11019653"
api_key="key1234"

ip="$(curl http://ipecho.net/plain)"

echo content="$(curl \
    -k \
    -H "Authorization: Bearer $api_key" \
    -H "Content-Type: application/json" \
    -d '{"data": "'"$ip"'"}' \
    -X PUT "https://api.digitalocean.com/v2/domains/$domain/records/$record")"
4

1 回答 1

4

您的脚本中没有任何问题可以破坏灰烬。

好吧,除了你在做echo content="....". content=这将在输出中打印以引号连接到命令输出的单词。

如果要设置变量的值然后打印它,请执行以下操作:

#!/bin/ash

domain="mydomain.com"
record="11019653"
api_key="key1234"

ip="$(curl http://ipecho.net/plain)"

content="$(curl \
-k \
-H "Authorization: Bearer $api_key" \
-H "Content-Type: application/json" \
-d '{"data": "'"$ip"'"}' \
-X PUT "https://api.digitalocean.com/v2/domains/$domain/record/$record")"

echo "$content"

如果与名称 ash 链接,程序busybox 将充当外壳:

ln -s /bin/busybox /bin/ash

即使在您当前的目录(或测试目录)中:

ln -s /bin/busybox ash

./ash然后,您可以通过在 PWD 或ashPATH 目录中键入 if 来启动它。如果你愿意,你可以从中测试命令和脚本,或者使用 bash 作为你的 shell,如果文件的 she-bang 是,则使用ash script.shor (更好)启动脚本./script.sh#!/bin/ash

于 2015-12-28T21:56:47.850 回答