BASH: pass arguments to sub-script

Похоже, вы спрашиваете об инодах и суперблоке. См.: http://www.linfo.org/superblock и en.wikipedia.org/wiki/Inode

. Файловые системы не нуждаются в «мастер-файле» для отслеживать все файлы и каталоги, содержащиеся внутри, как таковые. Итак, я бы сказал, что нет "файла, обычно присутствующего в системе Linux, который содержит информацию о структуре каталогов и файлах, содержащихся в этих каталогах".

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

0
26.04.2016, 13:36
3 ответа

Вы можете передать полный путь к файлу конфигурации во вложенный сценарий. Например:

#!/bin/bash

. ./config

./sub-script ./config

Подсценарий может сделать что-то вроде этого:

cfg="$1"
shift
. "$cfg"

Вы даже можете установить значение по умолчанию для $ cfg , на всякий случай $ 1 пусто.

cfg=${1:-/path/to/default/config}
0
28.01.2020, 02:20

Если вы можете настроить свой сценарий таким образом

#!/bin/bash

. config

. /path/to/sub-script

Любые переменные, инициализированные в config , должны стать доступными для основного сценария, а любые скрипты, исходящие от него.

Объяснение

Похоже, ваш сценарий запускал новый неинтерактивный процесс оболочки, переменные оболочки, инициализированные в родительском сценарии, были бы недоступны, но экспортированные переменные среды должны быть доступны новому дочернему процессу.

3
28.01.2020, 02:20

Вы можете экспортировать свои переменные:

 VAR=foo
 export VAR

или:

 export VAR=foo

Однако эти переменные будут видны в среде всех подпроцессов.

2
28.01.2020, 02:20

Теги

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