Bash-主脚本的调用函数,带有子脚本的传递参数

时间:2019-09-20 07:34:47

标签: bash function shell

我有一个主脚本,该脚本的功能定义很少。使用子脚本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

1 个答案:

答案 0 :(得分:1)

在声明函数之后,您将立即执行它:

add()
{
...
}
add; # you execute it here... remove this line
相关问题