2014-01-23 4 views
1

У меня есть Баш скрипт, который открывает два файла, который имеет следующее содержание:Объем переменной из файла, открытого в Bash

FILE1:

#!/bin/bash 
a='Sunday' 

file2:

#!/bin/bash 
b=$a 

Вот мой фрагмент кода:

#!/bin/bash 
. file1 
. file2 
echo $b 

ВЫВОД: воскресенье

Вот мой вопрос:

  1. Какова область переменной «а», когда я открываю file1 в сценарий оболочки?

  2. Как создать переменную оболочки с таким видом области? Как показано ниже:

    #!/bin/bash 
    a='Sunday' 
    . file2 
    echo $b 
    

Возможно ли это?

+0

Вы пробовали это? Что случилось? – choroba

ответ

2

Выполнение сценария с помощью . выполняет команды из этого файла, как если бы они были написаны встроенными. Sourcing не вводит никаких дополнительных возможностей или среды.

Запись a='Sunday' имеет такой же эффект, независимо от того, записываете ли вы ее напрямую или используете сценарий с этой строкой: она создает глобальную переменную, видимую в остальной части вашего скрипта. Это также объясняет, почему file2 может видеть $a, потому что b=$a также выполняет inline.

Смежные вопросы