十年專注于品牌網站建設 十余年專注于網站建設_小程序開發_APP開發,低調、敢創新、有情懷!
      南昌百恒網絡微信公眾號 掃一掃關注
      小程序
      tel-icon全國服務熱線:400-680-9298,0791-88117053
      掃一掃關注百恒網絡微信公眾號
      掃一掃打開百恒網絡微信小程序

      百恒網絡

      南昌百恒網絡

      在腳本中重定向輸出的操作方法

      百恒網絡 2017-09-26 5100

      Linux系統 shell腳本中可以用STDOUT和STDERR文件描述符以在多個位置生成輸出,只要簡單地重定向相應的文件描述符就行了。那么具體如何操作呢?有兩種方法來在腳本中重定向輸出,下面昌網絡公司-百恒網絡就來為大家介紹一下:

      一、臨時重定向

      如果有意在腳本中生成錯誤消息,可以將單獨的一行輸出重定向到STDERR。你所需要做的是使用輸出重定向符來將輸出信息重定向到STDERR文件描述符。在重定向到文件描述符時,你必須在文件描述符數字之前加一個&:

      echo "This is an error message" >&2

      這行會在腳本的STDERR文件描述符所指向的位置顯示文本,而不是通常的STDOUT。下面這個例子就利用了這項功能,我們一起來看看。

      $ cat test8

      #!/bin/bash

      # testing STDERR messages

      echo "This is an error" >&2

      echo "This is normal output"

      $

      如果像平常一樣運行這個腳本,你可能看不出什么區別。

      $ ./test8

      This is an error

      This is normal output

      $

      記住,默認情況下,Linux會將STDERR導向STDOUT。但是,如果你在運行腳本時重定向了STDERR,腳本中所有導向STDERR的文本都會被重定向。

      $ ./test8 2> test9

      This is normal output

      $ cat test9

      This is an error

      $

      這時通過STDOUT顯示的文本顯示在了屏幕上,而發送給STDERR的echo語句的文本則被重定向到了輸出文件。

      這個方法非常適合在腳本中生成錯誤消息。如果有人用了你的腳本,他們可以像上面的例子中那樣輕松地通過STDERR文件描述符重定向錯誤消息。

      二、永久重定向

      如果腳本中有大量數據需要重定向,那重定向每個echo語句就會很煩瑣。取而代之,你可以用exec命令告訴shell在腳本執行期間重定向某個特定文件描述符。

      $ cat test10

      #!/bin/bash

      # redirecting all output to a file

      exec 1>testout

      echo "This is a test of redirecting all output"

      echo "from a script to another file."

      echo "without having to redirect every individual line"

      $ ./test10

      $ cat testout

      This is a test of redirecting all output

      from a script to another file. without having to redirect every individual line

      $

      exec命令會啟動一個新shell并將STDOUT文件描述符重定向到文件。腳本中發給STDOUT的所有輸出會被重定向到文件。

      可以在腳本執行過程中重定向STDOUT。

      $ cat test11

      #!/bin/bash

      # redirecting output to different locations

      exec 2>testerror

      echo "This is the start of the script"

      echo "now redirecting all output to another location"

      exec 1>testout

      echo "This output should go to the testout file"

      echo "but this should go to the testerror file" >&2

      $

      $ ./test11

      This is the start of the script

      now redirecting all output to another location

      $ cat testout

      This output should go to the testout file

      $ cat testerror

      but this should go to the testerror file

      $

      這個腳本用exec命令來將發給STDERR的輸出重定向到文件testerror。接下來,腳本用 echo語句向STDOUT顯示了幾行文本。隨后再次使用exec命令來將STDOUT重定向到testout文件。注意,盡管STDOUT被重定向了,但你仍然可以將echo語句的輸出發給STDERR,在本例中還是重定向到testerror文件。

      當你只想將腳本的部分輸出重定向到其他位置時(如錯誤日志),這個特性用起來非常方便。不過這樣做的話,會碰到一個問題。 一旦重定向了STDOUT或STDERR,就很難再將它們重定向回原來的位置。如果你需要在重定 向中來回切換的話,有個辦法可以用。不過由于時間關系,今天就先不介紹了,我們下次再給大家講解,敬請關注!

      好了,關于在腳本中重定向輸出的兩個方法,本公司就已經為大家介紹完了,希望能夠對大家有所幫助,了解更多相關知識,歡迎訪問公司官網。此外,百恒網絡專業為您提供APP開發、網站設計、微信開發、網站推廣等服務,如有需要,歡迎大家來電咨詢,洽談合作!

      400-680-9298,0791-88117053
      掃一掃關注百恒網絡微信公眾號
      掃一掃打開百恒網絡小程序

      歡迎您的光顧,我們將竭誠為您服務×

      售前咨詢 售前咨詢
       
      售前咨詢 售前咨詢
       
      售前咨詢 售前咨詢
       
      售前咨詢 售前咨詢
       
      售前咨詢 售前咨詢
       
      售后服務 售后服務
       
      售后服務 售后服務
       
      備案專線 備案專線
       
      ×
      国产精品99亚发布| 亚洲欧美日韩国产精品一区| 夜夜精品视频一区二区| 亚洲人精品午夜射精日韩| 国产精品美女网站在线看| 久久精品国产亚洲AV网站| 国产av一区二区三区日韩| 久久久久久精品免费看SSS| 国产精品香蕉在线观看| 国产精品一区二区毛卡片| 精品国产一区二区三区不卡 | 在线成人精品国产区免费| 国产精品视频不卡| 亚洲精品国产自在久久| 国产精品成人久久久久久久| 精品国产乱子伦一区二区三区| 日韩精品久久久肉伦网站| 精品国产污污免费网站入口| 成人免费无码精品国产电影| 2022国产成人精品福利网站| 99热在线日韩精品免费| 亚洲国产日韩精品| 思思久久96热在精品国产| 久久久无码精品国产一区| 国产精品va在线观看无码| 国产精品极品美女自在线| 久久久g0g0午夜无码精品| 久久国产乱子伦免费精品| 精品久久久久久99人妻| 国产A级毛片久久久精品毛片 | 亚洲国产精品一区二区第一页| 人妻偷人精品成人AV| 麻豆亚洲AV成人无码久久精品| 日韩精品一线二线三线优势| 国产精品无码一区二区三区不卡| 麻豆精品人妻一区二区三区蜜桃| 久久亚洲欧美国产精品| 国产精品扒开腿做爽爽的视频| 精品无码成人网站久久久久久| 精品亚洲成在人线AV无码| 91麻豆精品国产91久久久久久|