Превращение скрипта bash в скрипт busybox

Я работаю над устройством, которое имеет только 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")"

person relima    schedule 28.12.2015    source источник


Ответы (1)


В вашем сценарии нет проблемы, которая могла бы превратиться в пепел.

Ну, кроме того, что вы делаете 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"

Программа busybox будет действовать как оболочка, если связать ее с именем ash:

ln -s /bin/busybox /bin/ash

Даже в вашем текущем каталоге (или тестовом):

ln -s /bin/busybox ash

Затем вы можете запустить его, набрав ./ash, если в PWD, или ash, если в каталоге PATH. Вы можете протестировать команды и сценарии из него, если хотите, или использовать bash в качестве оболочки и запускать сценарии с помощью ash script.sh или (лучше) ./script.sh, если она-банг файла #!/bin/ash

person Community    schedule 28.12.2015