Понимание того, что происходит в этом скрипте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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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