{"id":1512,"date":"2024-05-08T13:32:59","date_gmt":"2024-05-08T05:32:59","guid":{"rendered":"http:\/\/oneai.eu.org\/?p=1512"},"modified":"2024-05-08T13:32:59","modified_gmt":"2024-05-08T05:32:59","slug":"shell%e4%b8%ad0%e7%ad%89%e7%9a%84%e7%89%b9%e6%ae%8a%e7%94%a8%e6%b3%95","status":"publish","type":"post","link":"https:\/\/oneai.eu.org\/?p=1512","title":{"rendered":"shell\u4e2d$0,$?,$!\u7b49\u7684\u7279\u6b8a\u7528\u6cd5"},"content":{"rendered":"<pre><code class=\"language-bash\">shell\u4e2d$0,$?,$!\u7b49\u7684\u7279\u6b8a\u7528\u6cd5 (2011-03-01 17:38:00)\u8f6c\u8f7d\u25bc\n\u6807\u7b7e\uff1a it        \n\u53d8\u91cf\u8bf4\u660e:\n$$\nShell\u672c\u8eab\u7684PID\uff08ProcessID\uff09\n$!\nShell\u6700\u540e\u8fd0\u884c\u7684\u540e\u53f0Process\u7684PID\n$?\n\u6700\u540e\u8fd0\u884c\u7684\u547d\u4ee4\u7684\u7ed3\u675f\u4ee3\u7801\uff08\u8fd4\u56de\u503c\uff09\n$-\n\u4f7f\u7528Set\u547d\u4ee4\u8bbe\u5b9a\u7684Flag\u4e00\u89c8\n$*\n\u6240\u6709\u53c2\u6570\u5217\u8868\u3002\u5982&quot;$*&quot;\u7528\u300c&quot;\u300d\u62ec\u8d77\u6765\u7684\u60c5\u51b5\u3001\u4ee5&quot;$1 $2 \u2026 $n&quot;\u7684\u5f62\u5f0f\u8f93\u51fa\u6240\u6709\u53c2\u6570\u3002\n$@\n\u6240\u6709\u53c2\u6570\u5217\u8868\u3002\u5982&quot;$@&quot;\u7528\u300c&quot;\u300d\u62ec\u8d77\u6765\u7684\u60c5\u51b5\u3001\u4ee5&quot;$1&quot; &quot;$2&quot; \u2026 &quot;$n&quot; \u7684\u5f62\u5f0f\u8f93\u51fa\u6240\u6709\u53c2\u6570\u3002\n$#\n\u6dfb\u52a0\u5230Shell\u7684\u53c2\u6570\u4e2a\u6570\n$0\nShell\u672c\u8eab\u7684\u6587\u4ef6\u540d\n$1\uff5e$n\n\u6dfb\u52a0\u5230Shell\u7684\u5404\u53c2\u6570\u503c\u3002$1\u662f\u7b2c1\u53c2\u6570\u3001$2\u662f\u7b2c2\u53c2\u6570\u2026\u3002\n\u6211\u4eec\u5148\u5199\u4e00\u4e2a\u7b80\u5355\u7684\u811a\u672c\uff0c\u6267\u884c\u4ee5\u540e\u518d\u89e3\u91ca\u5404\u4e2a\u53d8\u91cf\u7684\u610f\u4e49\n# touch variable\n# vi variable\n\u811a\u672c\u5185\u5bb9\u5982\u4e0b\uff1a\n#!\/bin\/sh\necho &quot;number:$#&quot;\necho &quot;scname:$0&quot;\necho &quot;first :$1&quot;\necho &quot;second:$2&quot;\necho &quot;argume:$@&quot;\n\u4fdd\u5b58\u9000\u51fa\n\u8d4b\u4e88\u811a\u672c\u6267\u884c\u6743\u9650\n# chmod +x variable\n\u6267\u884c\u811a\u672c\n# .\/variable aa bb\nnumber:2\nscname:.\/variable\nfirst: aa\nsecond:bb\nargume:aa bb\n\u901a\u8fc7\u663e\u793a\u7ed3\u679c\u53ef\u4ee5\u770b\u5230\uff1a\n$# \u662f\u4f20\u7ed9\u811a\u672c\u7684\u53c2\u6570\u4e2a\u6570\n$0 \u662f\u811a\u672c\u672c\u8eab\u7684\u540d\u5b57\n$1\u662f\u4f20\u9012\u7ed9\u8be5shell\u811a\u672c\u7684\u7b2c\u4e00\u4e2a\u53c2\u6570\n$2\u662f\u4f20\u9012\u7ed9\u8be5shell\u811a\u672c\u7684\u7b2c\u4e8c\u4e2a\u53c2\u6570\n$@ \u662f\u4f20\u7ed9\u811a\u672c\u7684\u6240\u6709\u53c2\u6570\u7684\u5217\u8868\n\n--------------------------\n\n\u6587\u4ef6\u6bd4\u8f83\u8fd0\u7b97\u7b26\n-e filename        \u5982\u679c filename \u5b58\u5728\uff0c\u5219\u4e3a\u771f        [ -e \/var\/log\/syslog ]\n-d filename        \u5982\u679c filename \u4e3a\u76ee\u5f55\uff0c\u5219\u4e3a\u771f        [ -d \/tmp\/mydir ]\n-f filename        \u5982\u679c filename \u4e3a\u5e38\u89c4\u6587\u4ef6\uff0c\u5219\u4e3a\u771f        [ -f \/usr\/bin\/grep ]\n-L filename        \u5982\u679c filename \u4e3a\u7b26\u53f7\u94fe\u63a5\uff0c\u5219\u4e3a\u771f        [ -L \/usr\/bin\/grep ]\n-r filename        \u5982\u679c filename \u53ef\u8bfb\uff0c\u5219\u4e3a\u771f        [ -r \/var\/log\/syslog ]\n-w filename        \u5982\u679c filename \u53ef\u5199\uff0c\u5219\u4e3a\u771f        [ -w \/var\/mytmp.txt ]\n-x filename        \u5982\u679c filename \u53ef\u6267\u884c\uff0c\u5219\u4e3a\u771f        [ -L \/usr\/bin\/grep ]\nfilename1 -nt filename2        \u5982\u679c filename1 \u6bd4 filename2 \u65b0\uff0c\u5219\u4e3a\u771f        [ \/tmp\/install\/etc\/services -nt \/etc\/services ]\nfilename1 -ot filename2        \u5982\u679c filename1 \u6bd4 filename2 \u65e7\uff0c\u5219\u4e3a\u771f        [ \/boot\/bzImage -ot arch\/i386\/boot\/bzImage ]\n\u5b57\u7b26\u4e32\u6bd4\u8f83\u8fd0\u7b97\u7b26 \uff08\u8bf7\u6ce8\u610f\u5f15\u53f7\u7684\u4f7f\u7528\uff0c\u8fd9\u662f\u9632\u6b62\u7a7a\u683c\u6270\u4e71\u4ee3\u7801\u7684\u597d\u65b9\u6cd5\uff09\n-z string        \u5982\u679c string \u957f\u5ea6\u4e3a\u96f6\uff0c\u5219\u4e3a\u771f        [ -z &quot;$myvar&quot; ]\n-n string        \u5982\u679c string \u957f\u5ea6\u975e\u96f6\uff0c\u5219\u4e3a\u771f        [ -n &quot;$myvar&quot; ]\nstring1 = string2        \u5982\u679c string1 \u4e0e string2 \u76f8\u540c\uff0c\u5219\u4e3a\u771f        [ &quot;$myvar&quot; = &quot;one two three&quot; ]\nstring1 != string2        \u5982\u679c string1 \u4e0e string2 \u4e0d\u540c\uff0c\u5219\u4e3a\u771f        [ &quot;$myvar&quot; != &quot;one two three&quot; ]\n\u7b97\u672f\u6bd4\u8f83\u8fd0\u7b97\u7b26\nnum1 -eq num2        \u7b49\u4e8e        [ 3 -eq $mynum ]\nnum1 -ne num2        \u4e0d\u7b49\u4e8e        [ 3 -ne $mynum ]\nnum1 -lt num2        \u5c0f\u4e8e        [ 3 -lt $mynum ]\nnum1 -le num2        \u5c0f\u4e8e\u6216\u7b49\u4e8e        [ 3 -le $mynum ]\nnum1 -gt num2        \u5927\u4e8e        [ 3 -gt $mynum ]\nnum1 -ge num2        \u5927\u4e8e\u6216\u7b49\u4e8e        [ 3 -ge $mynum ]\n\n\u7b97\u672f\u8fd0\u7b97\u7b26 \n+ - * \/ % \u8868\u793a\u52a0\u51cf\u4e58\u9664\u548c\u53d6\u4f59\u8fd0\u7b97\n+= -= *= \/= \u540c C \u8bed\u8a00\u4e2d\u7684\u542b\u4e49\n\n\u4f4d\u64cd\u4f5c\u7b26\n> &gt;&gt;= \u8868\u793a\u4f4d\u5de6\u53f3\u79fb\u4e00\u4f4d\u64cd\u4f5c\n&amp; &amp;= | |= \u8868\u793a\u6309\u4f4d\u4e0e\u3001\u4f4d\u6216\u64cd\u4f5c\n~ ! \u8868\u793a\u975e\u64cd\u4f5c\n^ ^= \u8868\u793a\u5f02\u6216\u64cd\u4f5c \n\n\u5173\u7cfb\u8fd0\u7b97\u7b26 \n= == != \u8868\u793a\u5927\u4e8e\u3001\u5c0f\u4e8e\u3001\u5927\u4e8e\u7b49\u4e8e\u3001\u5c0f\u4e8e\u7b49\u4e8e\u3001\u7b49\u4e8e\u3001\u4e0d\u7b49\u4e8e\u64cd\u4f5c\n&amp;&amp; || \u903b\u8f91\u4e0e\u3001\u903b\u8f91\u6216\u64cd\u4f5c\n\n\u6d4b\u8bd5\u547d\u4ee4\n\ntest\u547d\u4ee4\u7528\u4e8e\u68c0\u67e5\u67d0\u4e2a\u6761\u4ef6\u662f\u5426\u6210\u7acb\uff0c\u5b83\u53ef\u4ee5\u8fdb\u884c\u6570\u503c\u3001\u5b57\u7b26\u548c\u6587\u4ef63\u4e2a\u65b9\u9762\u7684\u6d4b\u8bd5\uff0c\u5176\u6d4b\u8bd5\u7b26\u548c\u76f8\u5e94\u7684\u529f\u80fd\u5206\u522b\u5982\u4e0b\u3002\n\n\uff081\uff09\u6570\u503c\u6d4b\u8bd5\uff1a\n\n\u3000\u3000-eq \u7b49\u4e8e\u5219\u4e3a\u771f\u3002\n\n\u3000\u3000-ne \u4e0d\u7b49\u4e8e\u5219\u4e3a\u771f\u3002\n\n\u3000\u3000-gt \u5927\u4e8e\u5219\u4e3a\u771f\u3002\n\n\u3000\u3000-ge \u5927\u4e8e\u7b49\u4e8e\u5219\u4e3a\u771f\u3002\n\n\u3000\u3000-lt \u5c0f\u4e8e\u5219\u4e3a\u771f\u3002\n\n\u3000\u3000-le \u5c0f\u4e8e\u7b49\u4e8e\u5219\u4e3a\u771f\u3002\n\n\uff082\uff09\u5b57\u4e32\u6d4b\u8bd5\uff1a\n\n\u3000\u3000= \u7b49\u4e8e\u5219\u4e3a\u771f\u3002\n\n\u3000\u3000!= \u4e0d\u76f8\u7b49\u5219\u4e3a\u771f\u3002\n\n\u3000\u3000-z\u5b57\u4e32 \u5b57\u4e32\u957f\u5ea6\u4f2a\u5219\u4e3a\u771f\u3002\n\n\u3000\u3000-n\u5b57\u4e32 \u5b57\u4e32\u957f\u5ea6\u4e0d\u4f2a\u5219\u4e3a\u771f\u3002\n\n\uff083\uff09\u6587\u4ef6\u6d4b\u8bd5\uff1a\n\n\u3000\u3000-e\u6587\u4ef6\u540d \u5982\u679c\u6587\u4ef6\u5b58\u5728\u5219\u4e3a\u771f\u3002\n\n\u3000\u3000-r\u6587\u4ef6\u540d \u5982\u679c\u6587\u4ef6\u5b58\u5728\u4e14\u53ef\u8bfb\u5219\u4e3a\u771f\u3002\n\n\u3000\u3000-w\u6587\u4ef6\u540d \u5982\u679c\u6587\u4ef6\u5b58\u5728\u4e14\u53ef\u5199\u5219\u4e3a\u771f\u3002\n\n\u3000\u3000-x\u6587\u4ef6\u540d \u5982\u679c\u6587\u4ef6\u5b58\u5728\u4e14\u53ef\u6267\u884c\u5219\u4e3a\u771f\u3002\n\n\u3000\u3000-s\u6587\u4ef6\u540d \u5982\u679c\u6587\u4ef6\u5b58\u5728\u4e14\u81f3\u5c11\u6709\u4e00\u4e2a\u5b57\u7b26\u5219\u4e3a\u771f\u3002\n\n\u3000\u3000-d\u6587\u4ef6\u540d \u5982\u679c\u6587\u4ef6\u5b58\u5728\u4e14\u4e3a\u76ee\u5f55\u5219\u4e3a\u771f\u3002\n\n\u3000\u3000-f\u6587\u4ef6\u540d \u5982\u679c\u6587\u4ef6\u5b58\u5728\u4e14\u4e3a\u666e\u901a\u6587\u4ef6\u5219\u4e3a\u771f\u3002\n\n\u3000\u3000-c\u6587\u4ef6\u540d \u5982\u679c\u6587\u4ef6\u5b58\u5728\u4e14\u4e3a\u5b57\u7b26\u578b\u7279\u6b8a\u6587\u4ef6\u5219\u4e3a\u771f\u3002\n\n\u3000\u3000-b\u6587\u4ef6\u540d \u5982\u679c\u6587\u4ef6\u5b58\u5728\u4e14\u4e3a\u5757\u7279\u6b8a\u6587\u4ef6\u5219\u4e3a\u771f<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>shell\u4e2d$0,$?,$!\u7b49\u7684\u7279\u6b8a\u7528\u6cd5 (2011-03-01 17:38:00)\u8f6c\u8f7d\u25bc \u6807\u7b7e\uff1a it \u53d8\u91cf\u8bf4\u660e: $$ Shell\u672c\u8eab\u7684PID\uff08ProcessID\uff09 $! Shell\u6700\u540e\u8fd0\u884c\u7684\u540e\u53f0Process\u7684PID $? \u6700\u540e\u8fd0\u884c\u7684\u547d\u4ee4\u7684\u7ed3\u675f\u4ee3\u7801\uff08\u8fd4\u56de\u503c\uff09 $- \u4f7f\u7528Set\u547d\u4ee4\u8bbe\u5b9a\u7684Flag\u4e00\u89c8 $* \u6240\u6709\u53c2\u6570\u5217\u8868\u3002\u5982&quot;$*&quot;\u7528\u300c&quot;\u300d\u62ec\u8d77\u6765\u7684\u60c5\u51b5\u3001\u4ee5&quot;$1 $2 \u2026 $n&quot;\u7684\u5f62\u5f0f\u8f93\u51fa\u6240\u6709\u53c2\u6570\u3002 $@ \u6240\u6709\u53c2\u6570\u5217\u8868\u3002\u5982&quot;$@&quot;\u7528\u300c&quot;\u300d\u62ec\u8d77\u6765\u7684\u60c5\u51b5\u3001\u4ee5&quot;$1&quot; &quot;$2&quot; \u2026 &quot;$n&quot; \u7684\u5f62\u5f0f\u8f93\u51fa\u6240\u6709\u53c2\u6570\u3002 $# \u6dfb\u52a0\u5230Shell\u7684\u53c2\u6570\u4e2a\u6570 $0 Shell\u672c\u8eab\u7684\u6587\u4ef6\u540d $1\uff5e$n \u6dfb\u52a0\u5230Shell\u7684\u5404\u53c2\u6570\u503c\u3002$1\u662f\u7b2c1\u53c2\u6570\u3001$2\u662f\u7b2c2\u53c2\u6570\u2026\u3002 \u6211\u4eec\u5148\u5199\u4e00\u4e2a\u7b80\u5355\u7684\u811a\u672c\uff0c\u6267\u884c\u4ee5\u540e\u518d\u89e3\u91ca\u5404\u4e2a\u53d8\u91cf\u7684\u610f\u4e49 # touch variable # vi variable \u811a\u672c\u5185\u5bb9\u5982\u4e0b\uff1a #!\/bin\/sh echo &quot;number:$#&quot; echo &quot;scname:$0&quot; echo &quot;first :$1&quot; echo &quot;second:$2&quot; echo &quot;argume:$@&quot; \u4fdd\u5b58\u9000\u51fa \u8d4b\u4e88\u811a\u672c\u6267\u884c\u6743\u9650 # chmod +x variable \u6267\u884c\u811a\u672c # .\/variable aa bb number:2 scname:.\/variable first: aa second:bb argume:aa bb \u901a\u8fc7\u663e\u793a\u7ed3\u679c\u53ef\u4ee5\u770b\u5230\uff1a $# \u662f\u4f20\u7ed9\u811a\u672c\u7684\u53c2\u6570\u4e2a\u6570 $0 \u662f\u811a\u672c\u672c\u8eab\u7684\u540d\u5b57 $1\u662f\u4f20\u9012\u7ed9\u8be5shell\u811a\u672c\u7684\u7b2c\u4e00\u4e2a\u53c2\u6570 $2\u662f\u4f20\u9012\u7ed9\u8be5shell\u811a\u672c\u7684\u7b2c\u4e8c\u4e2a\u53c2\u6570 $@ \u662f\u4f20\u7ed9\u811a\u672c\u7684\u6240\u6709\u53c2\u6570\u7684\u5217\u8868 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; \u6587\u4ef6\u6bd4\u8f83\u8fd0\u7b97\u7b26 -e filename \u5982\u679c filename \u5b58\u5728\uff0c\u5219\u4e3a\u771f [ -e \/var\/log\/syslog ] -d filename \u5982\u679c filename \u4e3a\u76ee\u5f55\uff0c\u5219\u4e3a\u771f [ -d \/tmp\/mydir ] -f filename \u5982\u679c filename \u4e3a\u5e38\u89c4\u6587\u4ef6\uff0c\u5219\u4e3a\u771f [ -f \/usr\/bin\/grep ] -L filename \u5982\u679c filename \u4e3a\u7b26\u53f7\u94fe\u63a5\uff0c\u5219\u4e3a\u771f [ -L \/usr\/bin\/grep ] -r filename \u5982\u679c filename \u53ef\u8bfb\uff0c\u5219\u4e3a\u771f [ -r \/var\/log\/syslog ] -w filename \u5982\u679c filename \u53ef\u5199\uff0c\u5219\u4e3a\u771f [ -w \/var\/mytmp.txt ] -x filename \u5982\u679c filename \u53ef\u6267\u884c\uff0c\u5219\u4e3a\u771f [ -L \/usr\/bin\/grep ] filename1 -nt filename2 \u5982\u679c filename1 \u6bd4 filename2 \u65b0\uff0c\u5219\u4e3a\u771f [ \/tmp\/install\/etc\/services -nt \/etc\/services ] filename1 -ot filename2 \u5982\u679c filename1 \u6bd4 filename2 \u65e7\uff0c\u5219\u4e3a\u771f [ \/boot\/bzImage -ot arch\/i386\/boot\/bzImage ] \u5b57\u7b26\u4e32\u6bd4\u8f83\u8fd0\u7b97\u7b26 \uff08\u8bf7\u6ce8\u610f\u5f15\u53f7\u7684\u4f7f\u7528\uff0c\u8fd9\u662f\u9632\u6b62\u7a7a\u683c\u6270\u4e71\u4ee3\u7801\u7684\u597d\u65b9\u6cd5\uff09 -z string \u5982\u679c string \u957f\u5ea6\u4e3a\u96f6\uff0c\u5219\u4e3a\u771f [ -z &quot;$myvar&quot; ] -n string \u5982\u679c string \u957f\u5ea6\u975e\u96f6\uff0c\u5219\u4e3a\u771f [ -n &quot;$myvar&quot; ] string1 = string2 \u5982\u679c string1 \u4e0e string2 \u76f8\u540c\uff0c\u5219\u4e3a\u771f [ &quot;$myvar&quot; = &quot;one two three&quot; ] string1 != string2 \u5982\u679c string1 \u4e0e string2 \u4e0d\u540c\uff0c\u5219\u4e3a\u771f [ &quot;$myvar&quot; != &quot;one two three&quot; ] \u7b97\u672f\u6bd4\u8f83\u8fd0\u7b97\u7b26 num1 -eq num2 \u7b49\u4e8e [ 3 -eq $mynum ] num1 -ne num2 \u4e0d\u7b49\u4e8e [ 3 -ne $mynum ] num1 -lt num2 \u5c0f\u4e8e [ 3 -lt $mynum ] num1 -le num2 \u5c0f\u4e8e\u6216\u7b49\u4e8e [ 3 -le $mynum ] num1 -gt num2 \u5927\u4e8e [ 3 -gt $mynum ] num1 -ge num2 \u5927\u4e8e\u6216\u7b49\u4e8e [ 3 -ge $mynum ] \u7b97\u672f\u8fd0\u7b97&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_eb_attr":"","footnotes":""},"categories":[87,82,80],"tags":[],"class_list":["post-1512","post","type-post","status-publish","format-standard","hentry","category-linux","category-82","category-80"],"_links":{"self":[{"href":"https:\/\/oneai.eu.org\/index.php?rest_route=\/wp\/v2\/posts\/1512","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/oneai.eu.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/oneai.eu.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/oneai.eu.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/oneai.eu.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1512"}],"version-history":[{"count":1,"href":"https:\/\/oneai.eu.org\/index.php?rest_route=\/wp\/v2\/posts\/1512\/revisions"}],"predecessor-version":[{"id":1513,"href":"https:\/\/oneai.eu.org\/index.php?rest_route=\/wp\/v2\/posts\/1512\/revisions\/1513"}],"wp:attachment":[{"href":"https:\/\/oneai.eu.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1512"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/oneai.eu.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1512"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/oneai.eu.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1512"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}