UNIX, как изменить файл скрипта из другого файла? - PullRequest
2 голосов
/ 15 ноября 2010

У меня есть два вызова файла a_file и b_file. Я пытался написать a_file, чтобы он мог изменить переменную в b_file.

echo "This is a_file"
echo "Enter x to display msg1 or y to display msg2"
read input

и

echo "This is b_file"
if [ "$var1" = "x" ]; then
  echo "message 1"
else
  echo "message 2"
fi

Подскажите, пожалуйста, как я могу манипулировать переменной var1 из a_file?


Это обновление ответа Хачика. это было довольно ясно. Но что, если я хочу, чтобы этот b_file запускался каждую минуту после первого выполнения a_file? (crontab) Должен ли я написать это следующим образом.

echo "This is a_file"
echo "Enter x to display msg1 or y to display msg2"
read x
* * * * * ./b_file "$x"

и

echo "This is b_file"
if [ "$1" = "x" ]; then
  echo "message 1"
else
  echo "message 2"
fi

Ответы [ 3 ]

2 голосов
/ 15 ноября 2010

Лучший способ - передать аргументы из командной строки:

echo "This is a_file"
echo "Enter x to display msg1 or y to display msg2"
read x
./b_file "$x"

и

echo "This is b_file"
if [ "$1" = "x" ]
  echo "message 1"
else
  echo "message 2"
fi

О модификации: вы можете использовать sed для изменения b_file. cat b_file | sed "s/\\\$var/$x/g"

2 голосов
/ 15 ноября 2010

Вы можете использовать переменные окружения. В a_file экспортируйте переменную var:

export var="Some_value"

В b_file вы можете использовать его как:

echo $var

Тем не менее, вам необходимо создать скрипт оболочки a_file, например:

source a_file

Я предполагаю, что здесь вы используете сценарии оболочки.

0 голосов
/ 15 ноября 2010

Вы можете использовать функции и включить файл с определениями функций в файлы, которые вызывают функции.Затем функции могут принимать аргументы.Начните с чтения этой документации для написания функций в bash.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...