Bash RETVAL是什么意思?
我正在尝试为Bash RETVAL是什么意思?,bash,shell,Bash,Shell,我正在尝试为start和stop服务的脚本创建一个模板。 我正在检查模板的tomcatstart和stop,并查看命令RETVAL=$? 这是干什么的?我应该保留它吗? 顺便说一下,我的剧本在下面,以防你们想看 #!/bin/bash #=================================================================================== # # FILE: <script-file-name>.sh # # USAGE
start
和stop
服务的脚本创建一个模板。
我正在检查模板的tomcat
start和stop,并查看命令RETVAL=$?
这是干什么的?我应该保留它吗?
顺便说一下,我的剧本在下面,以防你们想看
#!/bin/bash
#===================================================================================
#
#
FILE: <script-file-name>.sh
#
#
USAGE: <script-file-name>.sh [-d] [-l] [-oD logfile] [-h] [starting directories]
#
# DESCRIPTION: List and/or delete all stale links in directory trees.
#
The default starting directory is the current directory.
#
Don’t descend directories on other filesystems.
#
#
OPTIONS: see function ’usage’ below
# REQUIREMENTS: ---
#
BUGS: ---
#
NOTES: ---
#
AUTHOR: Valter Henrique, valter.henrique@<company>.com
#
COMPANY: <company>
#
VERSION: 1.0
#
CREATED: 03.14.13
#
REVISION: 03.14.13
#===================================================================================
#
# chkconfig: 345 90 12
# description: <service-name> start, stop, restart service
#
# Get function from functions library
. /etc/init.d/functions
folder=/<company>/<service-folder> #folder to the application
service="<service-name>" #name of the service
startup=$folder/start.sh
shutdown=$folder/stop.sh
#=== FUNCTION ================================================================
#
NAME: start
# DESCRIPTION: Start the service <service-name>
# PARAMETER 1: ---
#===============================================================================
start() {
#----------------------------------------------------------------------
# logging the start
#----------------------------------------------------------------------
initlog -c "echo -n Starting $service:"
#----------------------------------------------------------------------
# getting the process PID
#----------------------------------------------------------------------
pid_process=`ps -ef | grep "$folder/<jar>.jar" | grep -v grep |awk -F' ' '{ print $2 }'`;
if [ $pid_process ]; then
echo "<service-name> is running!"
echo "Stop then first!"
else
action $"Starting <service-name> service: " su - <user_deployer> -c $startup
RETVAL=$?
fi
#----------------------------------------------------------------------
# create the lock file
#----------------------------------------------------------------------
touch /var/lock/subsys/$service
success $"Sucess $service startup"
echo
}
#=== FUNCTION ================================================================
#
NAME: stop
# DESCRIPTION: Stop the service <service-name>
# PARAMETER 1: ---
#===============================================================================
stop() {
#----------------------------------------------------------------------
# logging the stop
#----------------------------------------------------------------------
initlog -c "echo -n Stopping $service: "
killproc $service
#----------------------------------------------------------------------
# now, delete the lock file
#----------------------------------------------------------------------
rm -f /var/lock/subsys/$service
echo
}
#----------------------------------------------------------------------
# Main Logic
#----------------------------------------------------------------------
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status $service
;;
restart|reload|condrestart)
stop
start
;;
*)
echo $"Usage: $0 {start|stop|restart|reload|status}"
exit 1
esac
exit 0
#/bin/bash
#===================================================================================
#
#
文件:.sh
#
#
用法:.sh[-d][l][oD日志文件][h][起始目录]
#
#描述:列出和/或删除目录树中的所有过时链接。
#
默认的起始目录是当前目录。
#
不要删除其他文件系统上的目录。
#
#
选项:参见下面的函数“用法”
#要求:---
#
错误:---
#
注:---
#
作者:瓦尔特·亨里克,瓦尔特。henrique@.com
#
公司:
#
版本:1.0
#
创建日期:03.14.13
#
修订日期:03.14.13
#===================================================================================
#
#chkconfig:345 90 12
#描述:启动、停止、重新启动服务
#
#从函数库中获取函数
. /etc/init.d/functions
folder=/#应用程序的文件夹
service=”“#服务名称
startup=$folder/start.sh
shutdown=$folder/stop.sh
#==函数================================================================
#
名称:start
#描述:启动服务
#参数1:---
#===============================================================================
开始(){
#----------------------------------------------------------------------
#记录开始时间
#----------------------------------------------------------------------
initlog-c“echo-n正在启动$service:”
#----------------------------------------------------------------------
#获取进程PID
#----------------------------------------------------------------------
pid|u process=`ps-ef | grep“$folder/.jar”| grep-v grep | awk-F''{print$2}';
如果[$pid_进程];则
“回声”正在运行
echo“先停下来!”
其他的
动作$“启动服务:”su--c$启动
RETVAL=$?
fi
#----------------------------------------------------------------------
#创建锁文件
#----------------------------------------------------------------------
触摸/var/lock/subsys/$service
success$“success$服务启动”
回声
}
#==函数================================================================
#
姓名:停止
#描述:停止服务
#参数1:---
#===============================================================================
停止(){
#----------------------------------------------------------------------
#记录停止
#----------------------------------------------------------------------
initlog-c“echo-n停止$service:”
killproc$服务
#----------------------------------------------------------------------
#现在,删除锁文件
#----------------------------------------------------------------------
rm-f/var/lock/subsys/$service
回声
}
#----------------------------------------------------------------------
#主要逻辑
#----------------------------------------------------------------------
案件“$1”
开始)
开始
;;
(停止)
停止
;;
(状态)
状态$服务
;;
重新启动|重新加载|重新启动)
停止
开始
;;
*)
echo$“用法:$0{start | stop | restart | reload | status}”
出口1
以撒
出口0
$?
给出最后执行的命令的状态。在您的情况下,最后执行的命令是action….
。此命令的退出状态将出现在$?
中,稍后将在RETVAL
变量中捕获该状态。
如果命令成功,
$?
将包含0,否则为非零值。RETVAL是一个变量。$?正在将最后执行的命令的状态分配给RETVAL变量。如其他人所述,$?
是最后一个命令的退出状态
现在,关于你的问题
RETVAL
不在脚本中的任何其他地方使用,但请记住,在bash中,正则变量是全局变量,因此其他函数可以使用它们。如您所见,有一个success
调用可能会用到它。在我选中的发行版中,/etc/init.d/functions
不使用此变量,因此该行只是噪声,可以删除。。检查您的分布以了解它的作用。需要强调的一点是:$?
在每个命令后都会被覆盖,因此如果您想记住特定命令的状态,需要在命令完成后立即将其值分配给另一个变量(如RETVAL
)。因为没有其他人提到它,RETVAL
是返回值的缩写。知道*nix关键字的词源有助于我记住它们。