Передача переменных в сценарий, который называется script [duplicate]

На этот вопрос уже есть ответ:

У меня есть сценарий bash, который должен вызывать другой сценарий bash, который зависит от пользователя, чтобы получить некоторую информацию о конфигурации, например:

somescript:

#!/bin/bash
${HOME}/.ssconfig
echo "Hello, ${VARIABLE}!"

~ / .ssconfig

#!/bin/bash
VARIABLE=world

Который , вместо того, чтобы дать мне Hello, world! , как ожидалось, дает мне Hello,!
Как я могу передать переменные из сценария в тот, который его вызвал?

2
задан 9 July 2014 в 22:04

1 ответ

Выполнение сценария не может влиять на оболочку, которая назвала его, так как сценарий работает в его собственной оболочке. Для влияния на оболочку вызова Вам нужно к источник сценарий:

$ help source  
source: source filename [arguments]  
    Execute commands from a file in the current shell.

    Read and execute commands from FILENAME in the current shell.  The
    entries in $PATH are used to find the directory containing FILENAME.
    If any ARGUMENTS are supplied, they become the positional parameters
    when FILENAME is executed.

Следовательно, строка, где Вы выполняете конфигурационный файл, должна быть изменена для определения источника его:

#!/bin/bash
source ${HOME}/.ssconfig
echo "Hello, ${VARIABLE}!"

Примечание, которое source является командой оболочки, таким образом, справка для него не находится в man source, но help source.

6
ответ дан 9 July 2014 в 22:04

Другие вопросы по тегам:

Похожие вопросы: