У меня есть мастер-скрипт, у которого мало функций определения.Используя дочерний скрипт, я пытаюсь вызвать мастер-скрипт вместе с передачей аргументов функции.Проблема в том, что мой мастер-скрипт выполняется дважды.1. Каждый раз, когда я вызываю свой дочерний скрипт, во-первых, все функции в мастер-скрипте выполняются без каких-либо аргументов (т. Е. Пустых аргументов). 2. Затем во второй раз значение аргумента передается и выполняется функция успешно, как и ожидалось.
Пожалуйста, позвольте мне, как избежать выполнения шага 1, указанного выше.
Я пытался с источником (или).с последующим указанием мастер-скрипта внутри дочернего скрипта и последующим указанием имени функции вместе с аргументами.Но это не работает.
Дочерний сценарий:
source <directory_path>/master.sh
add '123' 'get' 'R'
Главный сценарий:
#! /bin/bash
add()
{
exec &> $1_$(date "+%Y%m%d%H%M").log
Change=$1
Command=$2
if [[ $Command == "get" ]];
then Command_1="getfacl"
elif [[ $Command == "set" ]];
then Command_1="setfacl"
elif [[ $Command == "ch" ]];
then Command_1="chown"
else Command_1="ls"
fi
Tag=$3
if [[ -z "$Tag" ]];
then Tag=""
else Tag="-$Tag"
fi
}
add;
Дочерний сценарий:
source <directory_path>/master.sh
add '123' 'get' 'R'
Только один файл должен быть сгенерирован согласно сценарию.Но фактический результат создает 2 файла.
Ожидаемый результат
123_201909201012.log
Фактический результат
_201909201012.log
123_201909201012.log