Получить текущее имя сценария во время вызова из другого сценария - PullRequest
3 голосов
/ 29 июля 2011

В KornShell (ksh) у меня есть скрипт, который вызывает список скриптов.Сценарий вызываемого должен знать свое имя файла, чтобы он мог генерировать уникальную конфигурацию (или что-либо должно быть уникальным).

Проблема переменной $0 всегда указывает на сценарий вызывающего.Например, у нас есть два сценария:

caller.sh:

. callee.sh

callee.sh:

echo $0

Когда я выполняю caller.sh, вызываемый.sh выведите «caller.sh», а не «callee.sh».Итак, как я могу получить имя файла сценария текущего запущенного сценария?

Этот сценарий выполняется на серверах AIX, поэтому bash не доступен постоянно.

Ответы [ 2 ]

2 голосов
/ 29 июля 2011

Это потому, что вы используете callee.sh, т. Е. . callee.sh.

Так что, если вы можете просто выполнить callee.sh (и вам не нужны переменные окружения, которые установлены в callee.sh, чтобы быть активными в caller.sh,), измените ваш сценарий вызывающего абонента на

#!/bin/ksh
callee.sh

Мне неприятно это говорить, но я думаю, что люди из ksh сказали бы: «Работай как задумано».

0 голосов
/ 15 февраля 2017

У меня сработала следующая команда в скрипте callee.sh.

echo $(basename ${BASH_SOURCE[0]})
...