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