十年專注于品牌網(wǎng)站建設(shè) 十余年專注于網(wǎng)站建設(shè)_小程序開發(fā)_APP開發(fā),低調(diào)、敢創(chuàng)新、有情懷!
      南昌百恒網(wǎng)絡(luò)微信公眾號(hào) 掃一掃關(guān)注
      小程序
      tel-icon全國(guó)服務(wù)熱線:400-680-9298,0791-88117053
      掃一掃關(guān)注百恒網(wǎng)絡(luò)微信公眾號(hào)
      掃一掃打開百恒網(wǎng)絡(luò)微信小程序

      百恒網(wǎng)絡(luò)

      南昌百恒網(wǎng)絡(luò)

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

      百恒網(wǎng)絡(luò) 2017-09-26 5102

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

      一、臨時(shí)重定向

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

      echo "This is an error message" >&2

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

      $ cat test8

      #!/bin/bash

      # testing STDERR messages

      echo "This is an error" >&2

      echo "This is normal output"

      $

      如果像平常一樣運(yùn)行這個(gè)腳本,你可能看不出什么區(qū)別。

      $ ./test8

      This is an error

      This is normal output

      $

      記住,默認(rèn)情況下,Linux會(huì)將STDERR導(dǎo)向STDOUT。但是,如果你在運(yùn)行腳本時(shí)重定向了STDERR,腳本中所有導(dǎo)向STDERR的文本都會(huì)被重定向。

      $ ./test8 2> test9

      This is normal output

      $ cat test9

      This is an error

      $

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

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

      二、永久重定向

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

      $ 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命令會(huì)啟動(dòng)一個(gè)新shell并將STDOUT文件描述符重定向到文件。腳本中發(fā)給STDOUT的所有輸出會(huì)被重定向到文件。

      可以在腳本執(zhí)行過程中重定向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

      $

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

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

      好了,關(guān)于在腳本中重定向輸出的兩個(gè)方法,本公司就已經(jīng)為大家介紹完了,希望能夠?qū)Υ蠹矣兴鶐椭?,了解更多相關(guān)知識(shí),歡迎訪問公司官網(wǎng)。此外,百恒網(wǎng)絡(luò)專業(yè)為您提供APP開發(fā)、網(wǎng)站設(shè)計(jì)、微信開發(fā)、網(wǎng)站推廣等服務(wù),如有需要,歡迎大家來電咨詢,洽談合作!

      400-680-9298,0791-88117053
      掃一掃關(guān)注百恒網(wǎng)絡(luò)微信公眾號(hào)
      掃一掃打開百恒網(wǎng)絡(luò)小程序

      歡迎您的光顧,我們將竭誠(chéng)為您服務(wù)×

      售前咨詢 售前咨詢
       
      售前咨詢 售前咨詢
       
      售前咨詢 售前咨詢
       
      售前咨詢 售前咨詢
       
      售前咨詢 售前咨詢
       
      售后服務(wù) 售后服務(wù)
       
      售后服務(wù) 售后服務(wù)
       
      備案專線 備案專線
       
      ×
      精品深夜AV无码一区二区老年| 亚洲精品久久无码| 国产精品久久久精品三级| 久久久久国产成人精品| 婷婷成人国产精品| 欧洲精品无码成人久久久| 国产精品视频一区二区三区四 | 午夜国产精品久久久久| 久久久久久亚洲精品成人| 国产精品美女网站| 国产精品模特hd在线| 91精品久久久久| 久久久久九国产精品| 日韩特级黄色毛片| 亚洲国产精品嫩草影院| 无码日韩精品一区二区免费暖暖| 国产精品免费在线播放| 日韩精品无码一区二区三区AV| 中文字幕国产精品| 亚洲精品人成在线观看| 91精品美女在线| 亚洲乱码日产精品a级毛片久久| 国产精品国产三级国快看 | 精品乱码一区二区三区在线| 国产精品嫩草久久久久| 精品无码一区二区三区爱欲| 国内精品久久久久久久影视麻豆| 在线观看亚洲AV日韩AV| 在线91精品亚洲网站精品成人| 国产精品久久久久鬼色| 91在线精品亚洲一区二区| 久99久热只有精品国产男同| 中文国产成人精品久久96| 香港aa三级久久三级老师2021国产三级精品三级在 | 三上悠亚精品一区二区久久| 亚洲精品成人久久久| 精品无码日韩一区二区三区不卡| 精品国产_亚洲人成在线| 欧美日韩精品不卡在线观看| 2021国产成人精品国产| 精品国内在视频线2019 |