2016-05-18 27 views
0

這個命令在bash腳本中的含義是什麼?

my_script.sh $FILE_NAME.res 1> $FILE_NAME.xml 

這是否意味着我的xml文件只有在腳本運行沒有失敗時纔會創建?

+0

它只是運行命令並將stdout發送到'$ FILE_NAME.xml',在重定向之前的1是多餘的 – 123

回答

2
my_script.sh $FILE_NAME.res 1> $FILE_NAME.xml 

假設FILE_NAME是一個變量,腳本my_script.sh將採取

$ FILE_NAME.res作爲參數和標準輸出重定向到$ FILE_NAME.xml

這是建議你雙引號的變量,以避免點滴和分詞

my_script.sh "$FILE_NAME".res 1> "$FILE_NAME".xml 

[article]上的I/O重定向說:

爲標準輸入,stdout和stderr的文件描述符分別是0,1,和圖2, 。

關於:

這是否意味着,只有當該腳本運行 而不破壞我的XML將被創造出來的?

在正常情況下,腳本是否按預期運行,腳本中的任何輸出(stdout)都將重定向到.xml文件。

例外:

  1. 集-e選項將導致腳本時,在腳本中的命令無法退出。後面命令的輸出不會寫入文件。
  2. 腳本中還有其他重定向。
  3. 腳本外有多個重定向,例如。 ./script >file1 >file2。這裏輸出將被重定向到file2這是最後的場景
1
my_script.sh $FILE_NAME.res 1> $FILE_NAME.xml 
^    ^ ^  ^
run this script  |  |   | 
      with this file |   | 
       argument  |  to this file 
         redirect 
          stdout 

$FILE_NAME將從任何環境變量FILE_NAME設爲擴大。另請注意,>1>的更常見形式。