我有一个名为 server.sh 的脚本,它既具有主体(执行事物)又具有丰富的功能。 我现在有一个名为 client.sh 的脚本,该脚本本身具有主体,并且需要一些已经在 server.sh 中定义的功能。
我想在运行client.sh时重用server.sh中的功能,但我不想运行server.sh的主体。
我尝试了以下方法:
server.sh
#!/bin/bash
beautiful_function()
{
PARAM1=$1
PARAM2=$2
echo "I am the server and I received param1 = ${PARAM1} and param2 = ${PARAM2}"
}
echo "I am the body of server and I shouldn't be executed"
client.sh
#!/bin/bash
. ./server.sh
ugly_function()
{
beautiful_function $1 "hardcoded things"
}
ugly_function "hey, hi, I'm matteo"
但是,当我运行client.sh
时,我首先得到了echo "I am the body of server and I shouldn't be executed"
,然后正确地得到了要执行的功能beautiful_function
。
我想摆脱server.sh
主体的运行,好像beautiful_function
是我可以从外部调用的静态方法一样。
P.s。我还考虑过创建一个没有主体的my_functions.sh
脚本,server.sh
和client.sh
都会使用该脚本,因此我完全不会遇到执行主体的问题。
但是,我想知道是否还有另一种方法可以避免制作仅用于提供功能的第三个脚本。但是如果正确的答案是“您确实应该在没有主体的另一个脚本中提取所有函数,那是在Bash中执行此操作的正确方法”,那仍然是一个有效的答案-我是Bash的初学者,非常漂亮开放学习:)
预先回答可能的问题:
您是否已经尝试搜索? 是的,我做到了:)我所发现的所有内容(例如this或this)都会使我称呼
server.sh
的正文,这实际上是我想要避免的。