<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>https://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>https://jackxiang.com/post//</link>
<title><![CDATA[shell脚本执行返回的状态码，shell返回值环境变量之shell将其返回值赋值给$?环境变量,以及在Mysql备份导出mysqldump中的使用示例。]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[Php/Js/Shell/Go]]></category>
<pubDate>Mon, 11 Apr 2016 08:25:45 +0000</pubDate> 
<guid>https://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	背景：shell在执行一些程序时，其返回值影响后面用&amp;&amp;或&#124;&#124;来进行判断，特别是以rpmbuild来举例说明，其在post和postun用到一些删除某些服务啥的，出现返回值不是1，导致rpm -e xxx，出现错误，卸载报错 /var/tmp/rpm-tmp.ELL6uY: line 3:   /sbin/chkconfig: No such file or directory，这些都是和这个shell返回值有很大关系的。<br/>返回值，失败示例，返回1值：<br/><textarea name="code" class="php" rows="15" cols="100">
[root@localhost x86_64]# service del zookeeper
del: unrecognized service
[root@localhost x86_64]# echo $?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1
</textarea><br/>shell执行成功示例，返回0值：<br/><textarea name="code" class="php" rows="15" cols="100">
[root@localhost x86_64]# /sbin/chkconfig --del nginx
[root@localhost x86_64]# echo $?
0
</textarea><br/><br/>二、在Mysql备份导出mysqldump中的使用示例：<br/><textarea name="code" class="php" rows="15" cols="100">
$MYSQLDUMP -h $HOST -P $PORT -B $DATABASE -u $USER -p$PASSWORD &gt; $BACKDIR/$FILE
RETVAL=$?

if [ $RETVAL -eq 0 ]; then
&nbsp;&nbsp;echo &#039;Delete file&#039;
&nbsp;&nbsp;DATE=$(date -d &#039;-7 days&#039; &#039;+%Y-%m-%d&#039;)
&nbsp;&nbsp;OLDFILE=$BACKDIR/$PROJECT-$INDEX-$&#123;DATE&#125;&#039;.sql&#039;
&nbsp;&nbsp;rm -f $OLDFILE
fi
</textarea><br/><br/>=========================================================<br/>&nbsp;&nbsp;&nbsp;&nbsp; 每个命令都有一个返回值（返回状态或者退出状态）。命令执行成功的返回值总是0（零值），执行失败的命令，返回一个非0值（错误码）。错误码必须是一个1到255之间的整数。<br/>在编写脚本时，另一个很有用的命令是exit。这个命令被用来终止当前的执行，并把返回值交给shell。当exit不带任何参数时，它会终止当前脚本的执行并返回在它之前最后一个执行的命令的返回值。<br/>一个程序运行结束后，shell将其返回值赋值给$?环境变量。因此$?变量通常被用来检测一个脚本执行成功与否。<br/>与使用exit来结束一个脚本的执行类似，我们可以使用return命令来结束一个函数的执行并将返回值返回给调用者。当然，也可以在函数内部用exit，这 不但 会中止函数的继续执行，而且 会终止整个程序的执行。<br/><br/>摘自：https://github.com/liushuaikobe/bash-handbook-zh-CN#%E4%BA%A4%E4%BA%92%E6%A8%A1%E5%BC%8F<br/><br/><textarea name="code" class="php" rows="15" cols="100">
#! /bin/bash
echo &quot;please input the branch you want to compare&quot;
read $MY_BRANCH
for i in $(cat list)
do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;git-diff --quiet $MY_BRANCH $i&nbsp;&nbsp;&nbsp;&nbsp;[--quiet 选项的意思是不要输出比较后各个diff出来的结果]
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if [ $? -eq 0 ]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[$? 就是上一条命令执行的状态码]
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;then&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo $i
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fi
done
</textarea><br/><br/>Linux下一条命令或一个进程执行完成会返回一个一个状态码。<br/><br/>0&nbsp;&nbsp; ===&nbsp;&nbsp; 成功执行<br/><br/>非0 ===&nbsp;&nbsp;执行过程中出现异常或非正常退出<br/><br/>在Shell脚本中 最后执行的一条命令将决定整个shell脚本的状态. 此外 shell的内部命令exit也可以随时终止shell脚本的执行，返回Shell脚本的状态码<br/><br/>当shell脚本执行结束前 的最后一个命令是不带参数的exit ，那么 shell脚本的最终返回值 就是 exit 语句前一条语句的返回值，根据这个值可以判断脚本成功执行与否。<br/><br/> $? 可以查看 最后一条命令的返回值 该变量可以在shell 脚本中的任何地方使用.<br/><br/><br/>来自：http://www.cnblogs.com/MyEyes/archive/2012/01/12/2320529.html
]]>
</description>
</item><item>
<link>https://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] shell脚本执行返回的状态码，shell返回值环境变量之shell将其返回值赋值给$?环境变量,以及在Mysql备份导出mysqldump中的使用示例。]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>https://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>