我可以在 debian rules
make 文件中定义函数和全局变量,以便在不同部分中使用吗override_****
?
这样做还没有成功。
例如,以下是我的脚本文件之一的摘录。我也想在我的 debian 规则文件中的整个覆盖部分中使用这个函数和全局变量。
# console output colors
NC='\033[0m' # No Color
RED='\033[1;31m'
BLUE='\033[1;34m'
GREEN='\033[1;32m'
YELLOW='\033[1;33m'
#return code
rc=999
######################### Functions #############################
function logCommandExecution()
{
commandName=$1
exitCode=$2
#echo 'command name: '${commandName}' exitCode: '${exitCode}
if [ ${exitCode} -eq 0 ]
then
printf "${GREEN}${commandName}' completed successfully${NC}\n"
else
printf "${RED}${commandName} failed with error code [${exitCode}]${NC}\n"
exit ${exitCode}
fi
}
答案1
该debian/rules
文件是 makefile,而不是 sh 文件。
我将你的函数放入 makefile 中来尝试一下:
#!/usr/bin/make -f
# console output colors
NC='\033[0m' # No Color
RED='\033[1;31m'
GREEN='\033[1;32m'
######################### Functions #############################
function logCommandExecution()
{
commandName=$1
exitCode=$2
#echo 'command name: '${commandName}' exitCode: '${exitCode}
if [ ${exitCode} -eq 0 ]
then
printf "${GREEN}${commandName}' completed successfully${NC}\n"
else
printf "${RED}${commandName} failed with error code [${exitCode}]${NC}\n"
exit ${exitCode}
fi
}
all:
logCommandExecution Passcmd 0
logCommandExecution Failcmd 1
然后,当我尝试执行此操作时,我得到:
$ make all
makefile:14: *** missing separator. Stop.
所以答案不是直接的。然而,有一些方法可以在 makefile 中运行 shell 语法。
这个答案可能会有所帮助。
我认为最简单的方法是将函数放在另一个文件中,然后从以下位置调用它debian/rules
:
生成文件:
#!/usr/bin/make -f
all:
./logCommandExecution Passcmd 0
./logCommandExecution Failcmd 1
日志命令执行:
#!/bin/sh
# console output colors
NC='\033[0m' # No Color
RED='\033[1;31m'
GREEN='\033[1;32m'
commandName=$1
exitCode=$2
#echo 'command name: '${commandName}' exitCode: '${exitCode}
if [ ${exitCode} -eq 0 ]
then
printf "${GREEN}${commandName}' completed successfully${NC}\n"
else
printf "${RED}${commandName} failed with error code [${exitCode}]${NC}\n"
exit ${exitCode}
fi
现在,当我成功时,我得到:
$ make
./logCommandExecution Passcmd 0
Passcmd' completed successfully
./logCommandExecution Failcmd 1
Failcmd failed with error code [1]
make: *** [makefile:5: all] Error 1