我有一个主脚本,该脚本的功能定义很少。使用子脚本im尝试调用主脚本,并将参数传递给函数。这里的问题是我的主脚本执行了两次。 1.每次我调用子脚本时,首先,主脚本中的所有函数都会不带任何参数(即空参数)而执行 2.然后第二次传递参数值并按预期成功执行函数。
请允许我如何避免执行上面指定的步骤1。
我尝试使用source(或)。然后在子脚本中指定主脚本,然后指定函数名称以及参数。但这是行不通的。
子脚本:
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
答案 0 :(得分:1)
在声明函数之后,您将立即执行它:
add()
{
...
}
add; # you execute it here... remove this line