{"id":92,"date":"2025-06-24T09:59:46","date_gmt":"2025-06-24T01:59:46","guid":{"rendered":"http:\/\/1.14.207.80\/?p=92"},"modified":"2025-06-24T11:13:19","modified_gmt":"2025-06-24T03:13:19","slug":"linux%e5%9f%ba%e7%a1%80%ef%bc%88shell%e8%84%9a%e6%9c%ac%ef%bc%89","status":"publish","type":"post","link":"https:\/\/www.zhangjianjia.xyz\/index.php\/2025\/06\/24\/linux%e5%9f%ba%e7%a1%80%ef%bc%88shell%e8%84%9a%e6%9c%ac%ef%bc%89\/","title":{"rendered":"Linux\u57fa\u7840\uff08shell\u811a\u672c\uff09"},"content":{"rendered":"\n<div class=\"wp-block-jetpack-markdown\"><h1>Shell\u811a\u672c\u7f16\u7a0b\u5b8c\u5168\u6307\u5357<\/h1>\n<h2>\u4e00\u3001\u57fa\u7840\u7ed3\u6784<\/h2>\n<h3>1. \u811a\u672c\u683c\u5f0f<\/h3>\n<pre><code class=\"language-bash\">#!\/usr\/bin\/env bash  # Shebang\u884c\uff08\u63a8\u8350\u53ef\u79fb\u690d\u5199\u6cd5\uff09\n# \u5355\u884c\u6ce8\u91ca\n: &lt;&lt;'COMMENT'\n\u591a\u884c\u6ce8\u91ca\u793a\u4f8b\n\u652f\u6301\u6362\u884c\u6587\u672c\nCOMMENT\n<\/code><\/pre>\n<h3>2. \u6267\u884c\u65b9\u5f0f<\/h3>\n<table>\n<thead>\n<tr>\n<th><strong>\u65b9\u6cd5<\/strong><\/th>\n<th><strong>\u547d\u4ee4<\/strong><\/th>\n<th><strong>\u8bf4\u660e<\/strong><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\u6dfb\u52a0\u6267\u884c\u6743\u9650<\/td>\n<td><code>chmod +x script.sh<\/code><\/td>\n<td>\u4f7f\u811a\u672c\u53ef\u6267\u884c<\/td>\n<\/tr>\n<tr>\n<td>\u76f4\u63a5\u6267\u884c<\/td>\n<td><code>.\/script.sh<\/code><\/td>\n<td>\u9700\u6267\u884c\u6743\u9650<\/td>\n<\/tr>\n<tr>\n<td>\u89e3\u91ca\u5668\u6267\u884c<\/td>\n<td><code>bash script.sh<\/code><\/td>\n<td>\u65e0\u9700\u6267\u884c\u6743\u9650<\/td>\n<\/tr>\n<tr>\n<td>\u73af\u5883\u53d8\u91cf\u6267\u884c<\/td>\n<td><code>script.sh<\/code><\/td>\n<td>\u9700\u8f6f\u94fe\u63a5\u5230<code>$PATH<\/code>\u76ee\u5f55<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>\u8c03\u8bd5\u5de5\u5177\uff1a<\/strong><\/p>\n<ul>\n<li><code>bash -n script.sh<\/code>\uff1a\u8bed\u6cd5\u68c0\u67e5<\/li>\n<li><code>bash -x script.sh<\/code>\uff1a\u9010\u884c\u8c03\u8bd5\uff08\u663e\u793a\u6267\u884c\u8fc7\u7a0b\uff09<\/li>\n<\/ul>\n<h2>\u4e8c\u3001\u53d8\u91cf\u5904\u7406<\/h2>\n<h3>1. \u53d8\u91cf\u7c7b\u578b<\/h3>\n<table>\n<thead>\n<tr>\n<th><strong>\u7c7b\u578b<\/strong><\/th>\n<th><strong>\u5b9a\u4e49\u65b9\u5f0f<\/strong><\/th>\n<th><strong>\u793a\u4f8b<\/strong><\/th>\n<th><strong>\u67e5\u770b\u547d\u4ee4<\/strong><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\u666e\u901a\u53d8\u91cf<\/td>\n<td><code>var=&quot;value&quot;<\/code><\/td>\n<td><code>user=&quot;alice&quot;<\/code><\/td>\n<td><code>echo $user<\/code><\/td>\n<\/tr>\n<tr>\n<td>\u73af\u5883\u53d8\u91cf<\/td>\n<td><code>export var=&quot;value&quot;<\/code><\/td>\n<td><code>export PATH=$PATH:\/add<\/code><\/td>\n<td><code>env<\/code><\/td>\n<\/tr>\n<tr>\n<td>\u53ea\u8bfb\u5e38\u91cf<\/td>\n<td><code>readonly var=&quot;value&quot;<\/code><\/td>\n<td><code>readonly VERSION=1.0<\/code><\/td>\n<td><code>readonly<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>2. \u53d8\u91cf\u64cd\u4f5c<\/h3>\n<pre><code class=\"language-bash\">name=&quot;Bob&quot;\necho ${name}          # \u6807\u51c6\u5f15\u7528\uff08\u63a8\u8350\uff09\nname+=&quot; Smith&quot;        # \u8ffd\u52a0 \u2192 &quot;Bob Smith&quot;\nunset name            # \u5220\u9664\u53d8\u91cf\n<\/code><\/pre>\n<h3>3. \u6838\u5fc3\u5185\u7f6e\u53d8\u91cf<\/h3>\n<table>\n<thead>\n<tr>\n<th><strong>\u53d8\u91cf<\/strong><\/th>\n<th><strong>\u542b\u4e49<\/strong><\/th>\n<th><strong>\u53d8\u91cf<\/strong><\/th>\n<th><strong>\u542b\u4e49<\/strong><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>$PATH<\/code><\/td>\n<td>\u547d\u4ee4\u641c\u7d22\u8def\u5f84<\/td>\n<td><code>$?<\/code><\/td>\n<td>\u4e0a\u6761\u547d\u4ee4\u9000\u51fa\u72b6\u6001<\/td>\n<\/tr>\n<tr>\n<td><code>$UID<\/code><\/td>\n<td>\u7528\u6237ID<\/td>\n<td><code>$$<\/code><\/td>\n<td>\u5f53\u524d\u8fdb\u7a0bPID<\/td>\n<\/tr>\n<tr>\n<td><code>$HOSTNAME<\/code><\/td>\n<td>\u4e3b\u673a\u540d<\/td>\n<td><code>$PPID<\/code><\/td>\n<td>\u7236\u8fdb\u7a0bPID<\/td>\n<\/tr>\n<tr>\n<td><code>$HISTSIZE<\/code><\/td>\n<td>\u5386\u53f2\u8bb0\u5f55\u6761\u6570<\/td>\n<td><code>$RANDOM<\/code><\/td>\n<td>\u968f\u673a\u6570(0-32767)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>\u4e09\u3001\u6570\u636e\u8fd0\u7b97<\/h2>\n<h3>1. \u7b97\u672f\u8fd0\u7b97<\/h3>\n<pre><code class=\"language-bash\">let result=&quot;10 + 5&quot;         # let\u8ba1\u7b97\nresult=$((10 * 2))          # $(( ))\u8ba1\u7b97\nresult=$(expr 10 - 3)       # expr\u547d\u4ee4\n\n# \u589e\u5f3a\u8d4b\u503c\ncount=5\n((count *= 3))              # count=15\n((count--))                 # count=14\n<\/code><\/pre>\n<h3>2. \u6d6e\u70b9\u6570\u8ba1\u7b97<\/h3>\n<pre><code class=\"language-bash\">pi=3.1415926\nprintf &quot;%.2f\\n&quot; $pi         # 3.14 (\u4fdd\u7559\u4e24\u4f4d\u5c0f\u6570)\nresult=$(echo &quot;scale=2; 10\/3&quot; | bc)  # 3.33 (bc\u8ba1\u7b97\u5668)\n<\/code><\/pre>\n<h3>3. \u968f\u673a\u6570\u751f\u6210<\/h3>\n<pre><code class=\"language-bash\">echo $((RANDOM % 100))      # 0-99\u968f\u673a\u6570\necho $((RANDOM % 50 + 1))   # 1-50\u968f\u673a\u6570\n<\/code><\/pre>\n<h2>\u56db\u3001\u6761\u4ef6\u6d4b\u8bd5<\/h2>\n<h3>1. \u6d4b\u8bd5\u8bed\u6cd5<\/h3>\n<pre><code class=\"language-bash\">test -f file.txt       # \u4f20\u7edf\u5199\u6cd5\n[ -d &quot;\/data&quot; ]         # \u5e38\u7528\u5199\u6cd5\uff08\u6ce8\u610f\u7a7a\u683c\uff09\n[[ $str =~ ^[A-Z] ]]   # \u6b63\u5219\u5339\u914d\uff08\u9ad8\u7ea7\u6a21\u5f0f\uff09\n<\/code><\/pre>\n<h3>2. \u6d4b\u8bd5\u9009\u9879\u901f\u67e5<\/h3>\n<table>\n<thead>\n<tr>\n<th><strong>\u7c7b\u578b<\/strong><\/th>\n<th><strong>\u9009\u9879<\/strong><\/th>\n<th><strong>\u542b\u4e49<\/strong><\/th>\n<th><strong>\u793a\u4f8b<\/strong><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>\u6587\u4ef6\u6d4b\u8bd5<\/strong><\/td>\n<td><code>-e<\/code><\/td>\n<td>\u6587\u4ef6\u662f\u5426\u5b58\u5728<\/td>\n<td><code>[ -e &quot;file&quot; ]<\/code><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td><code>-f<\/code><\/td>\n<td>\u662f\u5426\u4e3a\u666e\u901a\u6587\u4ef6<\/td>\n<td><code>[ -f &quot;\/path&quot; ]<\/code><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td><code>-x<\/code><\/td>\n<td>\u662f\u5426\u53ef\u6267\u884c<\/td>\n<td><code>[ -x &quot;\/bin\/ls&quot; ]<\/code><\/td>\n<\/tr>\n<tr>\n<td><strong>\u5b57\u7b26\u4e32<\/strong><\/td>\n<td><code>-z<\/code><\/td>\n<td>\u5b57\u7b26\u4e32\u4e3a\u7a7a<\/td>\n<td><code>[ -z &quot;$var&quot; ]<\/code><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td><code>==<\/code><\/td>\n<td>\u5b57\u7b26\u4e32\u76f8\u7b49<\/td>\n<td><code>[[ &quot;$s1&quot; == &quot;$s2&quot; ]]<\/code><\/td>\n<\/tr>\n<tr>\n<td><strong>\u6570\u503c\u6bd4\u8f83<\/strong><\/td>\n<td><code>-eq<\/code><\/td>\n<td>\u7b49\u4e8e<\/td>\n<td><code>[ $n1 -eq 10 ]<\/code><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td><code>-gt<\/code><\/td>\n<td>\u5927\u4e8e<\/td>\n<td><code>[ $n1 -gt $n2 ]<\/code><\/td>\n<\/tr>\n<tr>\n<td><strong>\u903b\u8f91\u7ec4\u5408<\/strong><\/td>\n<td><code>&amp;&amp;<\/code><\/td>\n<td>\u4e0e (AND)<\/td>\n<td><code>[ cond1 ] &amp;&amp; [ cond2 ]<\/code><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>`<\/td>\n<td><\/td>\n<td>`<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>\u4e94\u3001\u6d41\u7a0b\u63a7\u5236<\/h2>\n<h3>1. \u6761\u4ef6\u5206\u652f<\/h3>\n<p><strong>if\u8bed\u53e5<\/strong><\/p>\n<pre><code class=\"language-bash\">if [[ $age -ge 18 ]]; then\n   echo &quot;\u6210\u5e74\u4eba&quot;\nelif [[ $age -ge 13 ]]; then\n   echo &quot;\u9752\u5c11\u5e74&quot;\nelse\n   echo &quot;\u513f\u7ae5&quot;\nfi\n<\/code><\/pre>\n<p><strong>case\u8bed\u53e5<\/strong><\/p>\n<pre><code class=\"language-bash\">case $OS in\n  Linux)\n    echo &quot;\u4f7f\u7528 apt\/yum&quot;\n    ;;\n  Darwin)\n    echo &quot;\u4f7f\u7528 brew&quot;\n    ;;\n  *)\n    echo &quot;\u672a\u77e5\u7cfb\u7edf: $OS&quot;\n    exit 1\n    ;;\nesac\n<\/code><\/pre>\n<h3>2. \u5faa\u73af\u7ed3\u6784<\/h3>\n<p><strong>for\u5faa\u73af<\/strong><\/p>\n<pre><code class=\"language-bash\"># \u5217\u8868\u904d\u5386\nfor file in *.log; do\n   gzip &quot;$file&quot;\ndone\n\n# C\u8bed\u8a00\u98ce\u683c\nfor ((i=0; i&lt;10; i+=2)); do\n   echo &quot;\u5076\u6570: $i&quot;\ndone\n\n# \u6570\u5b57\u5e8f\u5217\nfor i in $(seq 5); do\n   echo &quot;\u8ba1\u6570: $i&quot;\ndone\n<\/code><\/pre>\n<p><strong>while\/until\u5faa\u73af<\/strong><\/p>\n<pre><code class=\"language-bash\"># while\uff1a\u6761\u4ef6\u4e3a\u771f\u6267\u884c\ncount=1\nwhile [[ $count -le 5 ]]; do\n   echo &quot;While: $count&quot;\n   ((count++))\ndone\n\n# until\uff1a\u6761\u4ef6\u4e3a\u5047\u6267\u884c\nuntil [[ $count -gt 10 ]]; do\n   echo &quot;Until: $count&quot;\n   ((count++))\ndone\n<\/code><\/pre>\n<h2>\u516d\u3001\u51fd\u6570\u4e0e\u8f93\u5165\u8f93\u51fa<\/h2>\n<h3>1. \u51fd\u6570\u5b9a\u4e49<\/h3>\n<pre><code class=\"language-bash\"># \u5b9a\u4e49\u51fd\u6570\ndisk_usage() {\n  local threshold=80  # \u5c40\u90e8\u53d8\u91cf\n  usage=$(df -h \/ | awk 'NR==2 {print $5}' | tr -d '%')\n  \n  if ((usage &gt; threshold)); then\n    echo &quot;\u8b66\u544a: \u78c1\u76d8\u4f7f\u7528\u7387 ${usage}% &gt; ${threshold}%&quot;\n    return 1\n  fi\n  return 0\n}\n\n# \u8c03\u7528\u51fd\u6570\ndisk_usage\n<\/code><\/pre>\n<h3>2. \u7528\u6237\u8f93\u5165<\/h3>\n<pre><code class=\"language-bash\">read -t 15 -p &quot;\u7528\u6237\u540d: &quot; username  # -t\uff1a\u8d85\u65f6(\u79d2)\nread -s -p &quot;\u5bc6\u7801: &quot; passwd        # -s\uff1a\u9690\u85cf\u8f93\u5165\n\n# \u591a\u53d8\u91cf\u8bfb\u53d6\nread first last &lt;&lt;&lt; &quot;John Doe&quot;\n<\/code><\/pre>\n<h3>3. \u8f93\u5165\u8f93\u51fa\u91cd\u5b9a\u5411<\/h3>\n<pre><code class=\"language-bash\">cmd &gt; file      # \u6807\u51c6\u8f93\u51fa\u91cd\u5b9a\u5411\uff08\u8986\u76d6\uff09\ncmd &gt;&gt; file     # \u6807\u51c6\u8f93\u51fa\u91cd\u5b9a\u5411\uff08\u8ffd\u52a0\uff09\ncmd 2&gt; file     # \u9519\u8bef\u8f93\u51fa\u91cd\u5b9a\u5411\ncmd &amp;&gt; file     # \u6240\u6709\u8f93\u51fa\u91cd\u5b9a\u5411\n\n# \u7ba1\u9053\u9ad8\u7ea7\u7528\u6cd5\necho &quot;data&quot; | {\n  read input\n  process &quot;$input&quot;\n  echo &quot;\u7ed3\u679c: $result&quot;\n}\n<\/code><\/pre>\n<h2>\u4e03\u3001Shell\u914d\u7f6e\u6587\u4ef6<\/h2>\n<h3>1. \u914d\u7f6e\u6587\u4ef6\u5206\u7c7b<\/h3>\n<table>\n<thead>\n<tr>\n<th><strong>\u6587\u4ef6<\/strong><\/th>\n<th><strong>\u4f5c\u7528\u8303\u56f4<\/strong><\/th>\n<th><strong>\u52a0\u8f7d\u65f6\u673a<\/strong><\/th>\n<th><strong>\u4e3b\u8981\u7528\u9014<\/strong><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>\/etc\/profile<\/code><\/td>\n<td>\u5168\u5c40<\/td>\n<td>\u767b\u5f55Shell<\/td>\n<td>\u7cfb\u7edf\u73af\u5883\u53d8\u91cf\u3001\u542f\u52a8\u7a0b\u5e8f<\/td>\n<\/tr>\n<tr>\n<td><code>\/etc\/bashrc<\/code><\/td>\n<td>\u5168\u5c40<\/td>\n<td>\u4ea4\u4e92\u5f0f\u975e\u767b\u5f55Shell<\/td>\n<td>\u5168\u5c40\u522b\u540d\u3001\u51fd\u6570\u5b9a\u4e49<\/td>\n<\/tr>\n<tr>\n<td><code>~\/.bash_profile<\/code><\/td>\n<td>\u7528\u6237<\/td>\n<td>\u767b\u5f55Shell<\/td>\n<td>\u7528\u6237\u73af\u5883\u53d8\u91cf\u3001\u4e2a\u4eba\u521d\u59cb\u5316<\/td>\n<\/tr>\n<tr>\n<td><code>~\/.bashrc<\/code><\/td>\n<td>\u7528\u6237<\/td>\n<td>\u4ea4\u4e92\u5f0fShell<\/td>\n<td>\u7528\u6237\u522b\u540d\u3001\u51fd\u6570\u3001\u63d0\u793a\u7b26\u8bbe\u7f6e<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>2. \u52a0\u8f7d\u987a\u5e8f<\/h3>\n<pre><code>\u767b\u5f55Shell\uff1a\n  \/etc\/profile \u2192 ~\/.bash_profile \u2192 ~\/.bashrc \u2192 \/etc\/bashrc\n\n\u975e\u767b\u5f55\u4ea4\u4e92\u5f0fShell\uff1a\n  ~\/.bashrc \u2192 \/etc\/bashrc\n<\/code><\/pre>\n<h2>\u516b\u3001\u9ad8\u7ea7\u6280\u5de7<\/h2>\n<h3>1. \u53d8\u91cf\u64cd\u4f5c<\/h3>\n<p><strong>\u4f4d\u7f6e\u53d8\u91cf<\/strong><\/p>\n<pre><code class=\"language-bash\">#!\/bin\/bash\necho &quot;\u811a\u672c\u540d: $0&quot;\necho &quot;\u7b2c\u4e00\u4e2a\u53c2\u6570: $1&quot;\necho &quot;\u6240\u6709\u53c2\u6570: $@&quot;\necho &quot;\u53c2\u6570\u4e2a\u6570: $#&quot;\n<\/code><\/pre>\n<p><strong>\u5f02\u6216\u4ea4\u6362<\/strong><\/p>\n<pre><code class=\"language-bash\">a=10; b=20\na=$((a^b)); b=$((a^b)); a=$((a^b))\necho &quot;a=$a, b=$b&quot;  # a=20, b=10\n<\/code><\/pre>\n<h3>2. \u5b89\u5168\u811a\u672c<\/h3>\n<pre><code class=\"language-bash\">#!\/usr\/bin\/env bash\nset -e    # \u547d\u4ee4\u5931\u8d25\u7acb\u5373\u9000\u51fa\nset -u    # \u4f7f\u7528\u672a\u5b9a\u4e49\u53d8\u91cf\u65f6\u62a5\u9519\nset -o pipefail  # \u7ba1\u9053\u4e2d\u4efb\u610f\u547d\u4ee4\u5931\u8d25\u5219\u6574\u4f53\u5931\u8d25\n\n# \u5b89\u5168\u5220\u9664\u793a\u4f8b\nreadonly BACKUP_DIR=&quot;\/backups&quot;\n[[ -d &quot;$BACKUP_DIR&quot; ]] || exit 1\nrm -rf &quot;$BACKUP_DIR&quot;\/*\n<\/code><\/pre>\n<h3>3. \u5b50\u8fdb\u7a0b\u63a7\u5236<\/h3>\n<pre><code class=\"language-bash\"># () \u521b\u5efa\u5b50\u8fdb\u7a0b\uff08\u53d8\u91cf\u9694\u79bb\uff09\n(var=100; echo &quot;\u5b50\u8fdb\u7a0b: $var&quot;)  # \u8f93\u51fa100\necho &quot;\u7236\u8fdb\u7a0b: $var&quot;            # \u7a7a\u503c\n\n# {} \u5f53\u524d\u8fdb\u7a0b\u6267\u884c\uff08\u5171\u4eab\u53d8\u91cf\uff09\n{ var=200; echo &quot;\u5f53\u524d\u8fdb\u7a0b: $var&quot;; }  # 200\necho &quot;\u5f53\u524d\u8fdb\u7a0b: $var&quot;               # 200\n<\/code><\/pre>\n<h3>4. \u5b9e\u7528\u4ee3\u7801\u7247\u6bb5<\/h3>\n<p><strong>\u8fdb\u5ea6\u6761\u663e\u793a<\/strong><\/p>\n<pre><code class=\"language-bash\">for i in {1..20}; do\n  printf &quot;\\r[%-20s] %d%%&quot; $(printf &quot;%${i}s&quot; | tr ' ' '#') $((i*5))\n  sleep 0.1\ndone\necho\n<\/code><\/pre>\n<p><strong>\u6d6e\u70b9\u6570\u6bd4\u8f83<\/strong><\/p>\n<pre><code class=\"language-bash\">compare_floats() {\n  result=$(echo &quot;$1 &gt; $2&quot; | bc)\n  [[ $result -eq 1 ]] &amp;&amp; echo &quot;$1 &gt; $2&quot; || echo &quot;$1 &lt;= $2&quot;\n}\n\ncompare_floats 3.14 2.71  # 3.14 &gt; 2.71\n<\/code><\/pre>\n<h2>\u4e5d\u3001\u6700\u4f73\u5b9e\u8df5<\/h2>\n<ol>\n<li><strong>\u53d8\u91cf\u5f15\u7528<\/strong>\uff1a\u59cb\u7ec8\u7528<code>${var}<\/code>\u66ff\u4ee3<code>$var<\/code><\/li>\n<li><strong>\u9519\u8bef\u5904\u7406<\/strong>\uff1a\u5173\u952e\u64cd\u4f5c\u68c0\u67e5\u9000\u51fa\u7801 <code>if ! cmd; then...<\/code><\/li>\n<li><strong>\u8def\u5f84\u5904\u7406<\/strong>\uff1a\u4f7f\u7528\u7edd\u5bf9\u8def\u5f84\uff0c\u907f\u514d\u4f9d\u8d56\u5f53\u524d\u76ee\u5f55<\/li>\n<li><strong>\u517c\u5bb9\u6027<\/strong>\uff1a\u91cd\u8981\u811a\u672c\u58f0\u660eShell\u7248\u672c <code>#!\/usr\/bin\/env bash<\/code><\/li>\n<li><strong>\u8c03\u8bd5<\/strong>\uff1a\u590d\u6742\u811a\u672c\u4f7f\u7528 <code>set -x<\/code> \u8c03\u8bd5\u6a21\u5f0f<\/li>\n<\/ol>\n<blockquote>\n<p>\u901a\u8fc7 <code>bash -n script.sh<\/code> \u8fdb\u884c\u9759\u6001\u68c0\u67e5\uff0c<code>shellcheck<\/code> \u5de5\u5177\u53ef\u63d0\u4f9b\u66f4\u4e13\u4e1a\u7684\u68c0\u67e5<\/p>\n<\/blockquote>\n<\/div>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[3],"tags":[],"class_list":["post-92","post","type-post","status-publish","format-standard","hentry","category-linux"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.zhangjianjia.xyz\/index.php\/wp-json\/wp\/v2\/posts\/92","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.zhangjianjia.xyz\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.zhangjianjia.xyz\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.zhangjianjia.xyz\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.zhangjianjia.xyz\/index.php\/wp-json\/wp\/v2\/comments?post=92"}],"version-history":[{"count":2,"href":"https:\/\/www.zhangjianjia.xyz\/index.php\/wp-json\/wp\/v2\/posts\/92\/revisions"}],"predecessor-version":[{"id":94,"href":"https:\/\/www.zhangjianjia.xyz\/index.php\/wp-json\/wp\/v2\/posts\/92\/revisions\/94"}],"wp:attachment":[{"href":"https:\/\/www.zhangjianjia.xyz\/index.php\/wp-json\/wp\/v2\/media?parent=92"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.zhangjianjia.xyz\/index.php\/wp-json\/wp\/v2\/categories?post=92"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zhangjianjia.xyz\/index.php\/wp-json\/wp\/v2\/tags?post=92"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}