{"id":225,"date":"2023-04-03T17:35:16","date_gmt":"2023-04-03T09:35:16","guid":{"rendered":"https:\/\/yajtech.synology.me\/wordpress\/?p=225"},"modified":"2023-04-07T09:34:15","modified_gmt":"2023-04-07T01:34:15","slug":"shell-scriptbash","status":"publish","type":"post","link":"https:\/\/www.yaj.com.tw\/wordpress\/?p=225","title":{"rendered":"Shell Script(Bash)"},"content":{"rendered":"\n<p>\u9019\u500b\u4e00\u500b\u76f4\u8b6f\u5f0f\u7684\u7a0b\u5f0f\u78bc\uff0c\u6240\u4ee5\uff0c\u6211\u5011\u5728\u7b2c\u4e00\u884c\u5b9a\u7fa9\u4f7f\u7528\u7684\u89e3\u8b6f\u7a0b\u5f0f\u662f\u4ec0\u9ebc<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#!\/bin\/bash<\/code><\/pre>\n\n\n\n<p>\u7576\u7a0b\u5f0f\u64b0\u5beb\u5b8c\u6210\u5f8c\uff0c\u518d\u5b9a\u7fa9\u6a94\u6848\u7684\u6b0a\u9650\uff0c\u53ef\u4ee5\u76f4\u63a5\u57f7\u884c<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>chmod 755 a.sh\n.\/a.sh<\/code><\/pre>\n\n\n\n<p>\u82e5\u5728\u7a0b\u5f0f\u5167\u9700\u8981\u8f38\u5165\u7684\u52d5\u4f5c\u63a1\u7528read \u6307\u4ee4<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>read -p \"\u8f38\u5165\u6578\u5b57\" NUM\necho ${NUM}<\/code><\/pre>\n\n\n\n<p>\u8f38\u51fa\u5b57\u4e32\u67092\u7a2e\u6307\u4ee4<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">#\u9019\u662f\u5b57\u4e32\u7684\u8f38\u51fa\necho ${NUM}\n\n#\u53ef\u4ee5\u900f\u904e\u683c\u5f0f\u5316\uff0c\u6307\u5b9a\u8f38\u51fa\u683c\u5f0f\nprintf \"%d\" ${NUM}<\/pre>\n\n\n\n<p>\u8b8a\u6578\u7684\u5b9a\u7fa9<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Tea=\"red123456\"\n\n\u8b8a\u6578\u5728\u7d66\u503c\u6642\u8207\u7b49\u865f\u4e4b\u9593\u4e0d\u80fd\u6709\u7a7a\u767d\n\u547d\u540d\u7684\u898f\u683c\u5982\u4e0b\uff1a\n1. \u53ea\u80fd\u4f7f\u7528 \u82f1\u6587\u3001\u6578\u5b57(\u4e0d\u80fd\u70ba\u958b\u982d\uff09\u53ca _\uff08\u4e0b\u5e95\u7dda\uff09\u3002\n2.\u4e0d\u80fd\u4f7f\u7528bash \u88e1\u9762\u7684\u4fdd\u7559\u5b57\n\nlocal A1=\"test\";  # \u5c07\u5b9a\u7fa9\u70ba\u51fd\u5f0f\u5167\u4f7f\u7528\u3002\u4e0d\u6703\u5f71\u97ff\u5916\u90e8\u7684\u51fd\u5f0f\u503c\u3002\n\nlocal -a \u5ba3\u544a\u8b8a\u6578\u70ba\u9663\u5217\nlocal -A \u5ba3\u544a\u8b8a\u6578\u70ba Associative array (key-value)\nlocal -r \u4ee3\u8868 readonly\nlocal -n \u628a\u53e6\u5916\u4e00\u500b\u8b8a\u6578\u5167\u5bb9\u4e5f\u6307\u5230\u9019\u500b\u8b8a\u6578\nlocal -p \u628a\u8b8a\u6578\u5167\u5bb9\u6253\u51fa\u4f86\uff0c\u914d\u5408 eval \u53ef\u4ee5\u73a9\u5f88\u591a\u6771\u897f\nlocal -i \u628a\u8b8a\u6578\u7576\u4f5c\u6574\u6578\n\n\n\u4f7f\u7528\u6642\u4e00\u822c\u5efa\u8b70\u4f7f\u7528\u5927\u62ec\u865f\u5c07\u8b8a\u6578\u540d\u7a31\u5305\u8d77\u4f86\uff0c\u9632\u6b64\u76f4\u8b6f\u6642\u51fa\u73fe\u932f\u8aa4\necho ${NUM}\n\n\u4f7f\u7528 readonly \u5f8c\uff0c\u9019\u500b\u8b8a\u6578\u5c07\u4e0d\u80fd\u518d\u88ab\u6539\u8b8a\nreadonly NUM\n\n\u4f7f\u7528 unset \u5f8c\uff0c\u8a72\u8b8a\u6578\u5c07\u5f9e\u7576\u524d\u7684\u904b\u4f5c\u4e2d\u88ab\u522a\u9664\nunset NUM\n\n\u8b80\u53d6\u8b8a\u6578\u7684\u9577\u5ea6\necho ${#Tea}   # \u8f93\u51fa 9\necho ${#Tea[0]}   # \u8f93\u51fa 9\n\n\u53d6\u51fa\u7279\u5b9a\u7684\u5167\u5bb9\necho ${Tea:1:4} # \u8f93\u51fa ed12\n\n\u9663\u5217\uff08bash \u53ea\u652f\u63f4\u4e00\u7dad\u9663\u5217\uff0c\u5176\u4ed6\u7684sh \u4e0d\u78ba\u5b9a\uff09\narray_row=(value0 value1 value2 value3)\n\u4e5f\u53ef\u4ee5\u662f\narray_row[0]=value0 \narray_row[1]=value1\narray_row[2]=value2\narray_row[3]=value3\n\n\u5c07\u5b57\u4e32\u8f49\u63db\u6210array\nstr=\"1 2 3 4 5\"\narray=(${str})\n\u4e4b\u5f8carray[0]=1\n\n\u8ffd\u52a0\u9663\u5217\u5728\u5f8c\u9762\u503c\uff0c\u7531\u5176\u662f\u4e0d\u77e5\u9053\u6700\u5f8c\u4e00\u500b\u9663\u5217\u7684\u7de8\u865f\u6642\narray+=('100')\n\n#\u8b80\u53d6\u9663\u5217n\u7684\u503c\nvaluen=${array_row[n]}\n\n#\u8f38\u51fa\u6240\u6709\u7684\u9663\u5217\u7684\u503c\necho ${array_row[@]}\n\n# \u53d6\u5f97\u9663\u5217\u7684\u6578\u91cf\nlength=${#array_row[@]}\n# \u6216\u8005\nlength=${#array_row[*]}\n\n# \u53d6\u5f97\u9663\u5217\u4e2dn\u7684\u5b57\u4e32\u9577\u5ea6\nlengthn=${#array_row[n]}\n<\/pre>\n\n\n\n<p>\u7c21\u6613\u7684\u56db\u5247\u904b\u7528\uff0c\u904b\u7b97\u90fd\u6703\u4f7f\u7528expr \u6216\u8005 awk \u53ca sed \u6307\u4ee4\u505a\u5b57\u4e32\u5207\u5272\u3002\u5728\u4e0d\u4f7f\u7528expr\u7b49\u5916\u90e8\u5de5\u5177\u7684\u60c5\u6cc1\u4e0b\u3002\u53ef\u4ee5\u4f7f\u7528\u4e0b\u5217\u65b9\u5f0f\u9032\u884c<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u4f7f\u7528$(()) \u5c07\u8981\u505a\u7684\u8a08\u7b97\u6216\u5224\u65b7\u653e\u7f6e\u5176\u4e2d\n\n((a++)) #\u8b8a\u6578\u7d2f\u52a0\necho $((1+50)) # \u7c21\u55ae\u904b\u7b97 51\necho $((2#111)) # \u8f49\u9032\u4f4d \u628a2\u9032\u4f4d\u7684111\u8f49\u621010\u9032\u4f4d\necho $(($a+2 == $b)) #\u6bd4\u5927\u5c0f\u7528\u7b26\u865f &gt;, &lt;, ==\n$ echo $((a &gt; b ? a : b)) #\u689d\u4ef6\u5f0f\u8f38\u51fa\n<\/code><\/pre>\n\n\n\n<p>\u6d6e\u9ede\u6578\u7684 Workaround (awk, bc)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u6d6e\u9ede\u904b\u7b97\n$ a=314\n$ echo $(awk \"BEGIN{print $a \/ 100 * 2}\")\n6.28\n\u6d6e\u9ede\u6578\u6bd4\u8f03\npi=3.14\nif &#91; `echo \"$pi &lt; 3.15\" | bc` -eq 1 ]; then<\/code><\/pre>\n\n\n\n<p>expr \u904b\u7b97\u65b9\u5f0f<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><tbody><tr><td>  \u904b\u7b97\u7b26  <\/td><td>\u8aaa\u660e<\/td><\/tr><tr><td>+<\/td><td>\u52a0\u6cd5<\/td><\/tr><tr><td>&#8211;<\/td><td>\u51cf\u6cd5<\/td><\/tr><tr><td>*<\/td><td>\u4e58\u6cd5(\u6b64\u8655\u5728\u4f7f\u7528\u6642\u9700\u52a0\u4e0a\\\u624d\u80fd\u4f7f\u7528\uff09<\/td><\/tr><tr><td>\/<\/td><td>\u9664\u6cd5<\/td><\/tr><tr><td>%<\/td><td>\u53d6\u9918\u6578<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>\u57f7\u884c\u5916\u90e8\u7a0b\u5f0f\u5f8c\u53d6\u503c\u7684\u65b9\u5f0f<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># \u4e00\u822c\u5e38\u7528\u9019\u500b\u65b9\u5f0f\nFileList=`ls \/tmp`\n\n# \u6216\u8005\u9019\u500b\u65b9\u5f0f\u4e5f\u53ef\u4ee5\nFileList=$(ls \/tmp)<\/code><\/pre>\n\n\n\n<p>\u8a3b\u89e3\u7684\u65b9\u5f0f<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u55ae\u884c\u7684\u8a3b\u89e3\u662f\u4f7f\u7528#\u865f\u70ba\u958b\u982d\uff0c\u4f46#! \u958b\u982d\uff0c\u4ee3\u8868\u7684\u662f\u63a5\u5217\u7684\u7a0b\u5f0f\u78bc\uff0c\u9810\u8a2d\u4f7f\u7528\u4ec0\u9ebc\u7a0b\u5f0f\u4f86\u904b\u884c\n\u591a\u884c\u7684\u65b9\u5f0f\u6709\u4e0b\u52173\u7a2e\u65b9\u5f0f\n\u65b9\u6cd5\u4e00\n:&lt;&lt;EOF\n\u8a3b\u89e3\nEOF\n\n\u65b9\u6cd5\u4e8c\n:&lt;&lt;'\n\u8a3b\u89e3\n'\n\n\u65b9\u6cd5\u4e09\n:&lt;&lt;\uff01\n\u8a3b\u89e3\n\uff01\n<\/code><\/pre>\n\n\n\n<p>\u53c3\u6578\u7684\u50b3\u905e<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\u5728\u7a0b\u5f0f\u7684\u904b\u884c\u6642\uff0c\u6211\u5011\u53ef\u4ee5\u900f\u904eargv \u7684\u65b9\u5f0f\uff0c\u5e36\u5165\u66f4\u591a\u7684\u53c3\u6578\u5728script\n\u4f8b\u5982\uff1a.\/a.sh 1 2 3 4 5 6<\/pre>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><tbody><tr><td>\u8b8a\u6578<\/td><td>\u8aaa\u660e<\/td><\/tr><tr><td>$#<\/td><td>\u50b3\u905e\u53c3\u6578\u7684\u6578\u91cf<\/td><\/tr><tr><td>$*<\/td><td>\u4ee5\u4e00\u500b\u5b57\u4e32\u5132\u5b58\u6240\u6709\u8f38\u5165\u7684\u53c3\u6578<\/td><\/tr><tr><td>$$<\/td><td>\u7576\u524d\u7684PID\u503c<\/td><\/tr><tr><td>$!<\/td><td>\u6700\u5f8c\u4e00\u500b\u57f7\u884c\u7684PID\u503c<\/td><\/tr><tr><td>$@<\/td><td>\u548c$*\u985e\u4f3c\uff0c\u4f46\u4ed6\u662f\u4ee5\u9663\u5217\u4f86\u5132\u5b58\u6240\u6709\u7684\u53c3\u6578<\/td><\/tr><tr><td>$-<\/td><td>\u8207set \u6307\u4ee4\u76f8\u540c<\/td><\/tr><tr><td>$?<\/td><td>\u986f\u793a\u6700\u5f8c\u57f7\u884c\u7684\u7a0b\u5f0f\u9000\u51fa\u6642\u7684\u72c0\u614b\uff0c0\u4ee3\u8868\u6c92\u6709\u932f\u8aa4<\/td><\/tr><tr><td>$n<\/td><td>n\u70ba0\u6642\uff0c\u4ee3\u8868\u7a0b\u5f0f\u672c\u8eab\u7684\u540d\u7a31\uff0c1~n \u70ba\u53c3\u6578\u7de8\u865f\uff0c\u8d85\u904e10\u4ee5\u4e0a\u9700\u8981\u4f7f\u7528{}\u5305\u8d77\u4f86\uff0c\u4f8b\u5982\uff1a${10}<\/td><\/tr><tr><td>$_<\/td><td>\u6700\u5f8c\u4e00\u500b\u53c3\u6578<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>\u51fd\u5f0f\u7684\u8a2d\u8a08\uff0c\u53c3\u6578\u7684\u4ee3\u5165\u65b9\u5f0f\u548c\u7a0b\u5f0f\u7684\u4ee3\u5165\u662f\u76f8\u540c\u7684\uff0c\u5ba3\u544a\u6642\u4e0d\u7528\u7279\u5225\u7684\u53bb\u8aaa\u660e\u9806\u5e8f\u3002\u56de\u50b3\u503c\u70ba0~255\u3002\u76f8\u540c\u7684\u4f7f\u7528$? \u65b9\u5f0f\u67e5\u8a62\uff0c\u5728\u5b9a\u7fa9\u6642\uff0c\u524d\u9762\u7684function \u53ef\u5beb\u53ef\u4e0d\u5beb\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>function EX1(){\n    echo $1\n    return 255\n}\nEX1 abc\necho $?\n\u57f7\u884c\u7d50\u679c\u70ba\nabc\n255<\/code><\/pre>\n\n\n\n<p>IF \u5224\u65b7\u5e38\u7528\u7684\u5e7e\u7a2e\u7528\u6cd5\u70ba\uff0c\u8981\u6ce8\u610f\u7684\u662fif\u5167\u5fc5\u9808\u6709\u52d5\u4f5c<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>if &#91; \"${a}\" = \"abc\" ]; then \n    echo \"OK\"\nfi\n\nif &#91; \"${a}\" = \"abc\" ]\nthen\n    echo \"OK\" \nfi\n\nif &#91; \"${a}\" = \"abc\" ]; then\n    echo \"OK\"\nelse \n    echo \"Fail\"\nfi\n\nif &#91; \"${a}\" = \"abc\" ]\nthen\n    echo \"OK\"\nelse \n    echo \"Fail\"\nfi\n\nif &#91; \"${a}\" = \"abc\" ]\nthen\n    echo \"OK\"\nelif &#91; \"${a}\" = \"ddd\" ]\n    echo \"ok2\"\nelse \n    echo \"Fail\"\nfi\n\n\u5176\u4ed6\u5beb\u6cd5\n&#91; \"abc\" = \"abc\" ] &amp;&amp; echo \"\u76f8\u540c\" || echo \"\u4e0d\u76f8\u540c\"\n\u7b49\u65bc\nif &#91; \"abc\" == \"abc\" ]\nthen\n    echo \"\u76f8\u540c\"\nelse \n    echo \"\u4e0d\u76f8\u540c\"\nfi\n\n<\/code><\/pre>\n\n\n\n<p>\u95dc\u4fc2\u904b\u7b97\u7b26\u7684\u6bd4\u8f03\uff0c\u53ea\u652f\u63f4\u6578\u503c<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><tbody><tr><td> \u904b\u7b97\u7b26 <\/td><td>\u8aaa\u660e<\/td><\/tr><tr><td>-eq<\/td><td>\u7b49\u65bc \uff0c\u82e5\u4f7f\u7528(( &#8230; ))\uff0c\u5247\u53ef\u4ee5\u4f7f\u7528==<\/td><\/tr><tr><td>-ne<\/td><td>\u4e0d\u7b49\u65bc<\/td><\/tr><tr><td>-gt<\/td><td>\u5927\u65bc\uff0c\u82e5\u4f7f\u7528(( &#8230; ))\uff0c\u5247\u53ef\u4ee5\u4f7f\u7528&gt;<\/td><\/tr><tr><td>-lt<\/td><td>\u5c0f\u65bc \uff0c\u82e5\u4f7f\u7528(( &#8230; ))\uff0c\u5247\u53ef\u4ee5\u4f7f\u7528&lt;<\/td><\/tr><tr><td>-ge<\/td><td>\u5927\u65bc\u7b49\u65bc<\/td><\/tr><tr><td>-le<\/td><td>\u5c0f\u65bc\u7b49\u65bc<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>\u5e03\u723e\/\u908f\u8f2f\u904b\u7b97\u7b26\u7684\u6bd4\u8f03 <\/p>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><tbody><tr><td> \u904b\u7b97\u7b26  <\/td><td> \u8aaa\u660e <\/td><td>\u4f8b\u5b50<\/td><\/tr><tr><td>!<\/td><td>Not<\/td><td>[ ! false ] \u8fd4\u56de true<\/td><\/tr><tr><td>-o<\/td><td>Or<\/td><td>[[ 10 -lt 10 -o 10 -gt 100 ]] \u8fd4\u56de&nbsp;true<\/td><\/tr><tr><td>||<\/td><td> Or <\/td><td>[[ 10 -lt 10 || 10 -gt 100 ]] \u8fd4\u56de&nbsp;true <br>\u53e6\u4e00\u7a2e\u7528\u9014\u662f\u5728\u7c21\u5beb\u6642\uff0c\u7528\u65bc\u4e0d\u6210\u7acb\u6642\u4f7f\u7528<\/td><\/tr><tr><td>-a<\/td><td>And<\/td><td>[[ 10 -lt 10 -a 100 -gt 100 ]] \u8fd4\u56de&nbsp;true<\/td><\/tr><tr><td>&amp;&amp;<\/td><td> And <\/td><td>[[ 10 -lt 10 &amp;&amp; 100 -gt 100 ]] \u8fd4\u56de&nbsp;true <br>\u53e6\u4e00\u7a2e\u7528\u9014\u662f\u5728\u7c21\u5beb\u6642\uff0c\u7528\u65bc\u6210\u7acb\u6642\u4f7f\u7528<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>\u5b57\u4e32\u904b\u7b97\u7b26\u7684\u6bd4\u8f03<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><tbody><tr><td> \u904b\u7b97\u7b26   <\/td><td>  \u8aaa\u660e  <\/td><td> \u4f8b\u5b50 <\/td><\/tr><tr><td>=<\/td><td>\u76f8\u7b49<\/td><td>[ &#8220;a&#8221; = &#8220;a&#8221; ]<\/td><\/tr><tr><td>==<\/td><td> \u76f8\u7b49 \uff0c\u5224\u65b7\u5f0f\u4e2d\u5fc5\u9808\u4f7f\u7528[[ ]] \u5305\u8d77\u4f86<\/td><td>[ [ &#8220;a&#8221; == &#8220;a&#8221; ] ]<\/td><\/tr><tr><td>!=<\/td><td>\u4e0d\u76f8\u7b49<\/td><td>[ &#8220;a&#8221; != &#8220;a&#8221; ]<\/td><\/tr><tr><td>=~<\/td><td>\u6b63\u898f\u8868\u793a\u6cd5\u6bd4\u5c0d\u5b57\u4e32\uff0c\u5224\u65b7\u5f0f\u4e2d\u5fc5\u9808\u4f7f\u7528[[ ]] \u5305\u8d77\u4f86 <\/td><td> [ [ &#8220;Hello, world.&#8221; =~ &#8220;^Hello&#8221; ] ] <\/td><\/tr><tr><td>-z<\/td><td>\u6aa2\u67e5\u5b57\u4e32\u662f\u5426\u70ba0<\/td><td>[ -z $a ]<\/td><\/tr><tr><td>-n<\/td><td>\u6aa2\u67e5\u5b57\u4e32\u662f\u5426\u4e0d\u70ba0 <\/td><td>[ -n $a ] <\/td><\/tr><tr><td>$<\/td><td>\u6aa2\u67e5\u5b57\u4e32\u662f\u5426\u70ba\u7a7a<\/td><td>[  $a ]  <\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>\u6587\u4ef6\u6aa2\u6e2c\u904b\u7b97\u7b26 \u4f7f\u7528\u65b9\u5f0f\u70ba [ -b $file ]&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><tbody><tr><td> \u904b\u7b97\u7b26 <\/td><td>   \u8aaa\u660e <\/td><\/tr><tr><td>-b file<\/td><td>\u6aa2\u67e5\u6587\u4ef6\u662f\u5426\u70ba Block \u8a2d\u5099\u6a94\u6848<\/td><\/tr><tr><td>-c file<\/td><td>\u6aa2\u67e5\u6587\u4ef6\u662f\u5426\u70ba Char \u8a2d\u5099\u6a94\u6848<\/td><\/tr><tr><td>-d file<\/td><td>\u6aa2\u67e5\u6587\u4ef6\u662f\u5426\u70ba \u76ee\u9304<\/td><\/tr><tr><td>-f file<\/td><td>\u6aa2\u67e5\u6587\u4ef6\u662f\u5426\u70ba \u4e00\u822c\u6587\u4ef6\uff08\u4e0d\u662f\u76ee\u9304\u548c\u8a2d\u5099\u6a94\u6848\uff09<\/td><\/tr><tr><td>-g file<\/td><td>\u6aa2\u67e5\u6587\u4ef6\u662f\u5426\u70ba \u8a2d\u5b9aSGID <\/td><\/tr><tr><td>-k file<\/td><td>\u6aa2\u67e5\u6587\u4ef6\u662f\u5426\u70ba \u8a2d\u5b9a Sticky Bit<\/td><\/tr><tr><td>-p file<\/td><td>\u6aa2\u67e5\u6587\u4ef6\u662f\u5426\u70ba \u7ba1\u9053<\/td><\/tr><tr><td>-u file<\/td><td>\u6aa2\u67e5\u6587\u4ef6\u662f\u5426\u70ba \u8a2d\u5b9aSUID <\/td><\/tr><tr><td>-r file<\/td><td>\u6aa2\u67e5\u6587\u4ef6\u662f\u5426\u70ba \u53ef\u8b80<\/td><\/tr><tr><td>-w file<\/td><td>\u6aa2\u67e5\u6587\u4ef6\u662f\u5426\u70ba \u53ef\u5beb<\/td><\/tr><tr><td>-x file<\/td><td>\u6aa2\u67e5\u6587\u4ef6\u662f\u5426\u70ba \u53ef\u57f7\u884c<\/td><\/tr><tr><td>-s file<\/td><td>\u6aa2\u67e5\u6587\u4ef6\u662f\u5426\u70ba \u4e3a\u7a7a\uff08\u6587\u4ef6\u5927\u5c0f\u662f\u5426\u5927\u4e8e0\uff09<\/td><\/tr><tr><td>-e file<\/td><td>\u6aa2\u67e5\u6587\u4ef6\uff08\u5305\u542b\u76ee\u9304\uff09\u662f\u5426\u70ba \u5b58\u5728<\/td><\/tr><tr><td>-S file<\/td><td>\u6aa2\u67e5\u6587\u4ef6\u662f\u5426\u70ba socket<\/td><\/tr><tr><td>-L file<\/td><td>\u6aa2\u67e5\u6587\u4ef6\u662f\u5426\u70ba \u7b26\u865f\u9023\u7d50<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>case &#8230; esac \uff0c\u985e\u4f3cswitch case<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>case $KEY in\n\"1\")\n    command1\n    ;;\n\"2\")\n    command2\n    ;;\n\n\n*)\n    other\n    ;;\nesac<\/code><\/pre>\n\n\n\n<p>\u56de\u5708\u7684\u7528\u6cd5<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># \u9019\u662ffor \u7684\u7528\u6cd5\uff0c\u5f8c\u9762\u7684item1 \u53ef\u4ee5\u662farray\nfor key in item1 item2 ... itemN\ndo\n     todo\ndone\n\nfor ((\u521d\u59cb\u503c;\u5224\u65b7\u5f0f;\u6b65\u6578\u9593\u9694))\ndo\n    \u7a0b\u5f0f\u78bc\ndone<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>#\u9019\u662f while \u7684\u7bc4\u4f8b\nwhile &#91; \"$a\" -qt \"3\" ]\ndo\n    command\ndone<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>\u7121\u9650\u56de\u5708\u7684\u5e7e\u7a2e\u505a\u6cd5\nwhile :\ndo\n    command\ndone\n\nwhile true\ndo\n    command\ndone\n\nfor (( ; ; ))\ndo\n    command\ndone\n# until \u70bafalse \u6642\u57f7\u884c\uff0c\u9019\u500b\u90e8\u4efd\u548c while \u4e0d\u540c\nuntil condition\ndo\n    command\ndone<\/code><\/pre>\n\n\n\n<p>\u56de\u5708\u4e2d\u5e38\u7528\u7684\u6307\u4ee4<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><tbody><tr><td>\u6307\u4ee4<\/td><td>\u8aaa\u660e<\/td><\/tr><tr><td>break<\/td><td>\u4e2d\u65b7\u56de\u5708<\/td><\/tr><tr><td>continue<\/td><td>\u56de\u5230\u56de\u5708\u7684\u8d77\u555f\u9ede\u518d\u6b21\u904b\u884c<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>\u5305\u542b\u5916\u90e8\u7a0b\u5f0f\u78bc<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u60f3\u8981include \u5916\u90e8\u7a0b\u5f0f\u78bc\u505a\u70ba\u5167\u90e8\u7a0b\u5f0f\u547c\u53eb\u4f7f\u7528\n. .\/lib.sh\nor \nsource .\/lib.sh<\/code><\/pre>\n\n\n\n<p>\u8f38\u5165\u8207\u8f38\u51fa\u5c0e\u5411\uff0c\u8f38\u51fa\u7684\u8cc7\u6599\u67093\u7a2e\u5206\u985e\uff0c0 \u662fSTDIN\uff0c1 \u662fSTDOUT\uff0c2 \u662fSTDERR\u3002\u4f8b\u5982\uff1a1&gt;&gt;\/dev\/null<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><tbody><tr><td>\u65b9\u6cd5<\/td><td>\u8aaa\u660e<\/td><td>\u4f8b\u5b50<\/td><\/tr><tr><td>&gt;<\/td><td>\u5c07\u8f38\u51fa\u7684\u5167\u5bb9\u5c0e\u5411\u5230\u6307\u5b9a\u7684\u6a94\u6848<\/td><td>1&gt;\/tmp\/a.txt<\/td><\/tr><tr><td>&gt;&gt;<\/td><td>\u5c07\u8f38\u51fa\u7684\u5167\u5bb9\u5c0e\u5411\u4e26\u52a0\u8f09\u5230\u6307\u5b9a\u7684\u6a94\u6848 <\/td><td>1&gt;&gt;\/tmp\/a.txt<\/td><\/tr><tr><td>&lt;<\/td><td>\u5c07\u6a94\u6848\u7684\u5167\u5bb9\uff0c\u8f38\u5165\u5230\u6307\u5b9a\u7684\u7a0b\u5f0f<\/td><td>wc -l &lt; \/tmp\/a.txt<\/td><\/tr><tr><td>&lt;&lt;  tag<\/td><td>\u7528\u65bc\u8f38\u5165tag \u7684\u5167\u5bb9<\/td><td>wc -l &lt;&lt; EOF <br>aaaaa<br>bbbb<br>ccccc<br>EOF<\/td><\/tr><\/tbody><\/table><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>\u9019\u500b\u4e00\u500b\u76f4\u8b6f\u5f0f\u7684\u7a0b\u5f0f\u78bc\uff0c\u6240\u4ee5\uff0c\u6211\u5011\u5728\u7b2c\u4e00\u884c\u5b9a\u7fa9\u4f7f\u7528\u7684\u89e3\u8b6f\u7a0b\u5f0f\u662f\u4ec0\u9ebc \u7576\u7a0b\u5f0f\u64b0\u5beb\u5b8c\u6210\u5f8c\uff0c\u518d\u5b9a\u7fa9\u6a94\u6848\u7684\u6b0a\u9650\uff0c\u53ef\u4ee5\u76f4 &#8230; <a title=\"Shell Script(Bash)\" class=\"read-more\" href=\"https:\/\/www.yaj.com.tw\/wordpress\/?p=225\" aria-label=\"\u95b1\u8b80\u3008Shell Script(Bash)\u3009\u5168\u6587\">\u95b1\u8b80\u5168\u6587<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[17],"class_list":["post-225","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-linux"],"_links":{"self":[{"href":"https:\/\/www.yaj.com.tw\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/225","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.yaj.com.tw\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.yaj.com.tw\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.yaj.com.tw\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.yaj.com.tw\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=225"}],"version-history":[{"count":29,"href":"https:\/\/www.yaj.com.tw\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/225\/revisions"}],"predecessor-version":[{"id":311,"href":"https:\/\/www.yaj.com.tw\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/225\/revisions\/311"}],"wp:attachment":[{"href":"https:\/\/www.yaj.com.tw\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=225"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.yaj.com.tw\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=225"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.yaj.com.tw\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=225"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}