Понимание того, что происходит в этом скриптеAndroid

Форум для тех, кто программирует под Android
Anonymous
Понимание того, что происходит в этом скрипте

Сообщение Anonymous »

У меня есть скрипт, предположительно работающий в Android 12 ksh, который работает... но я не могу понять, почему и как.
скрипт начинается с:

Код: Выделить всё

#!/system/bin/sh
is_sourced() {
[ "$_" = "is_sourced" ]
}
prt () {
if is_sourced
then
echo "$1"
else
log -p i -t "Emotiq" "$1"
fi
}
...
Затем он продолжает выполнять большую работу, успешно печатая с использованием prt «сообщение».
Я не могу понять, почему is_sourced удается надежно определить, загружаю ли я сценарий или выполняю его.
Добавленные распечатки показывают, что $_ всегда, независимо от того, где в моем коде is_sourced вызывается либо "is_sourced", если сценарий был исходным, либо "./test.sh" (т. е. имя, с которым я вызвал сценарий), если он выполняется.
Может ли кто-нибудь объяснить такое поведение?
Теоретически $_ должен быть последним параметром последней выданной команды, но это явно не так. правда, по крайней мере в этом случае.
Я тестировал с использованием оболочки adb, но это справедливо, даже если скрипт выполняется как часть настройки приложения.

Подробнее здесь: https://stackoverflow.com/questions/797 ... his-script

Вернуться в «Android»