将bash脚本转换为busybox脚本

时间:2015-12-28 21:40:53

标签: bash curl embedded busybox ash

我正在使用只有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")"

1 个答案:

答案 0 :(得分:3)

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

好吧,除了你正在做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将充当shell:

ln -s /bin/busybox /bin/ash

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

ln -s /bin/busybox ash

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