当前位置: 技术问答>linux和unix
???问点SHELL编程的两小问题。谢谢,太感谢了。
来源: 互联网 发布时间:2016-05-22
本文导语: 在下面这段代码中第4行 JOBNAME=$2 是什么意思 ? 还有就是第8行的 if test "$?" -eq 0 的“$?”是什么意思? 还有16行的 mount | grep $DISKDEV >/dev/null 2>&1 的 mount | grep $DISKDEV 是什么意思? ORACLE_SID=mega ex...
在下面这段代码中第4行 JOBNAME=$2 是什么意思 ?
还有就是第8行的 if test "$?" -eq 0 的“$?”是什么意思?
还有16行的 mount | grep $DISKDEV >/dev/null 2>&1 的 mount | grep $DISKDEV 是什么意思?
ORACLE_SID=mega
export ORACLE_SID
JOBNAME=$2
DISKDEV=/dev/sda1
mount | grep $DISKDEV >/dev/null 2>&1
if test "$?" -eq 0
then
echo "[INFO] ${DISKDEV} has mounted"
else
echo "[INFO] ${DISKDEV} be mounting ..."
mount $DISKDEV /data
fi
mount | grep $DISKDEV >/dev/null 2>&1
ret="$?"
if test "$ret" -ne 0
then
echo "[INFO] Cannot mount ${DISKDEV}."
for loop in 1 2 3 4 5
do
sleep 3
fsck -y $DISKDEV
mount $DISKDEV /data
ret="$?"
if test "$ret" -eq 0
then
break
fi
done
else
echo "[INFO] ${DISKDEV} mounted"
fi
mount | grep $DISKDEV >/dev/null 2>&1
if test "$?" -ne 0
then
echo "[INFO] Cannot mount after 5 times."
exit -1
fi
PID=`/bin/ps -ef|/bin/grep _mega |grep -v grep |/bin/awk '{print $2}'`
if [ -z "$PID" ]
then
echo "[INFO] Start Oracle server...."
su - oracle -c "/opt/superha/bin/dbstart.sh"
su - oracle -c "/opt/oracle/product/9.0.2/bin/lsnrctl start"
else
echo "In ora_start.sh, the Oracle has already started, so do nothing!n"
fi
echo "[INFO] Start shell finished."
还有就是第8行的 if test "$?" -eq 0 的“$?”是什么意思?
还有16行的 mount | grep $DISKDEV >/dev/null 2>&1 的 mount | grep $DISKDEV 是什么意思?
ORACLE_SID=mega
export ORACLE_SID
JOBNAME=$2
DISKDEV=/dev/sda1
mount | grep $DISKDEV >/dev/null 2>&1
if test "$?" -eq 0
then
echo "[INFO] ${DISKDEV} has mounted"
else
echo "[INFO] ${DISKDEV} be mounting ..."
mount $DISKDEV /data
fi
mount | grep $DISKDEV >/dev/null 2>&1
ret="$?"
if test "$ret" -ne 0
then
echo "[INFO] Cannot mount ${DISKDEV}."
for loop in 1 2 3 4 5
do
sleep 3
fsck -y $DISKDEV
mount $DISKDEV /data
ret="$?"
if test "$ret" -eq 0
then
break
fi
done
else
echo "[INFO] ${DISKDEV} mounted"
fi
mount | grep $DISKDEV >/dev/null 2>&1
if test "$?" -ne 0
then
echo "[INFO] Cannot mount after 5 times."
exit -1
fi
PID=`/bin/ps -ef|/bin/grep _mega |grep -v grep |/bin/awk '{print $2}'`
if [ -z "$PID" ]
then
echo "[INFO] Start Oracle server...."
su - oracle -c "/opt/superha/bin/dbstart.sh"
su - oracle -c "/opt/oracle/product/9.0.2/bin/lsnrctl start"
else
echo "In ora_start.sh, the Oracle has already started, so do nothing!n"
fi
echo "[INFO] Start shell finished."
|
在下面这段代码中第4行 JOBNAME=$2 是什么意思 ?
定义变量JOBNAME的值为第二个参数的值
还有就是第8行的 if test "$?" -eq 0 的“$?”是什么意思?
$?是上条命令执行结束后的返回值,通常0表示成功
还有16行的 mount | grep $DISKDEV >/dev/null 2>&1 的 mount | grep $DISKDEV 是什么意思?
把mount的输出结果传给grep,看其中是否包含$DISKDEV(也就是/dev/sda1),也就是说检测sda1是否已经挂载了
定义变量JOBNAME的值为第二个参数的值
还有就是第8行的 if test "$?" -eq 0 的“$?”是什么意思?
$?是上条命令执行结束后的返回值,通常0表示成功
还有16行的 mount | grep $DISKDEV >/dev/null 2>&1 的 mount | grep $DISKDEV 是什么意思?
把mount的输出结果传给grep,看其中是否包含$DISKDEV(也就是/dev/sda1),也就是说检测sda1是否已经挂载了