<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-cn">
		<id>https://wiki.qiaochenglei.cn/index.php?action=history&amp;feed=atom&amp;title=Shell%E8%84%9A%E6%9C%AC%E5%AE%B9%E6%98%93%E5%86%99%E9%94%99%E7%9A%84%E5%87%A0%E4%B8%AA%E8%AF%AD%E6%B3%95</id>
		<title>Shell脚本容易写错的几个语法 - 版本历史</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.qiaochenglei.cn/index.php?action=history&amp;feed=atom&amp;title=Shell%E8%84%9A%E6%9C%AC%E5%AE%B9%E6%98%93%E5%86%99%E9%94%99%E7%9A%84%E5%87%A0%E4%B8%AA%E8%AF%AD%E6%B3%95"/>
		<link rel="alternate" type="text/html" href="https://wiki.qiaochenglei.cn/index.php?title=Shell%E8%84%9A%E6%9C%AC%E5%AE%B9%E6%98%93%E5%86%99%E9%94%99%E7%9A%84%E5%87%A0%E4%B8%AA%E8%AF%AD%E6%B3%95&amp;action=history"/>
		<updated>2026-04-07T01:35:11Z</updated>
		<subtitle>本wiki的该页面的版本历史</subtitle>
		<generator>MediaWiki 1.24.2</generator>

	<entry>
		<id>https://wiki.qiaochenglei.cn/index.php?title=Shell%E8%84%9A%E6%9C%AC%E5%AE%B9%E6%98%93%E5%86%99%E9%94%99%E7%9A%84%E5%87%A0%E4%B8%AA%E8%AF%AD%E6%B3%95&amp;diff=1022&amp;oldid=prev</id>
		<title>Admin：创建页面，内容为“&lt;pre&gt; 1. if [$1 == &quot;&quot;]; then     fi    2处错误    []前后要加空格，前和后都要    $1是危险的，如果是空等于[ == &quot;&quot; ]; 有语法错误    正...”</title>
		<link rel="alternate" type="text/html" href="https://wiki.qiaochenglei.cn/index.php?title=Shell%E8%84%9A%E6%9C%AC%E5%AE%B9%E6%98%93%E5%86%99%E9%94%99%E7%9A%84%E5%87%A0%E4%B8%AA%E8%AF%AD%E6%B3%95&amp;diff=1022&amp;oldid=prev"/>
				<updated>2016-09-10T14:57:58Z</updated>
		
		<summary type="html">&lt;p&gt;创建页面，内容为“&amp;lt;pre&amp;gt; 1. if [$1 == &amp;quot;&amp;quot;]; then     fi    2处错误    []前后要加空格，前和后都要    $1是危险的，如果是空等于[ == &amp;quot;&amp;quot; ]; 有语法错误    正...”&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
1. if [$1 == &amp;quot;&amp;quot;]; then&lt;br /&gt;
    fi&lt;br /&gt;
   2处错误&lt;br /&gt;
   []前后要加空格，前和后都要&lt;br /&gt;
   $1是危险的，如果是空等于[ == &amp;quot;&amp;quot; ]; 有语法错误&lt;br /&gt;
   正确写法&lt;br /&gt;
    if [ &amp;quot;$1&amp;quot; == &amp;quot;&amp;quot; ]; then&lt;br /&gt;
    fi&lt;br /&gt;
2. a = 1&lt;br /&gt;
   1处错误，shell变量定义=前后不能有空白&lt;br /&gt;
   正确写法&lt;br /&gt;
   a=1&lt;br /&gt;
3. a=`ls`或a=$(&amp;quot;ls&amp;quot;)&lt;br /&gt;
     echo $a&lt;br /&gt;
     错误，如果结果是多行，echo是有问题的，尤其配合while使用时&lt;br /&gt;
     正确做法，加双引号&lt;br /&gt;
     echo &amp;quot;$a&amp;quot;&lt;br /&gt;
4.  grep &amp;quot;- data $abc&amp;quot; file&lt;br /&gt;
    两处错误，字符串参数的第一个字母如果是-需要转义，$需要转义，grep是示例，问题不仅限于grep&lt;br /&gt;
    正确 grep &amp;quot;\- data \$abc&amp;quot; file&lt;br /&gt;
5. 脚本参数转给命令&lt;br /&gt;
    ls $1   错误，如果$1有空格，变成了两个参数，正确用法 ls &amp;quot;$1&amp;quot;&lt;br /&gt;
    ls &amp;quot;$@&amp;quot; 错误 ，本意是传所有参数，这样变成了一个大参数，正确用法 ls $@&lt;br /&gt;
6. rm -f file cp -f file&lt;br /&gt;
    错误，服务器一般会将这两个命令重定向为带-i参数，-f参数失效,卡住&lt;br /&gt;
    正确用法 /bin/rm -f file /bin/cp -f file&lt;br /&gt;
7. 判断&lt;br /&gt;
    if [ $? -eq 0 || $? -eq 1 ]; then&lt;br /&gt;
    fi&lt;br /&gt;
    if [ $? -eq 0]; || [ $? -eq 1 ]; then&lt;br /&gt;
    fi&lt;br /&gt;
    错误,成功第二种经常复制而来&lt;br /&gt;
    正确做法每个条件独立一个[]，只有最后一个需要;&lt;br /&gt;
    if [ $? -eq 0] || [ $? -eq 1 ]; then&lt;br /&gt;
    fi&lt;br /&gt;
8. 返回值判断&lt;br /&gt;
    if [ $? -eq 0 ] || [ $? -eq 1 ]; then&lt;br /&gt;
    fi&lt;br /&gt;
    错误后在的$?已经不再是命令返回值，而是前一个判断的返回值，恒定为0&lt;br /&gt;
    正确做法，先存起来&lt;br /&gt;
    ret=$?&lt;br /&gt;
    if [ $ret -eq 0 ] || [ $ret -eq 1 ]; then&lt;br /&gt;
    fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>