2013-11-24 48 views
6

我運行了一個部署腳本來將我的服務器設置爲root用戶。然後我試圖運行名爲test.sh另一個腳本,它曾在它的下面幾行:語法錯誤:意外重定向

# Logging 
exec > >(tee -a /var/log/test_full.log) 
exec 2> >(tee -a /var/log/test_error.log) 

然而,當我嘗試這一點,我得到以下錯誤:

test.sh: 19: test.sh: Syntax error: redirection unexpected 

什麼可能會造成這個問題你認爲?我以前沒有聽說過這個錯誤。

回答

11

This answer解決您的問題,假設您的腳本片段已完成。

簡而言之,您通過dash運行腳本,而不是bash。解決方案就像添加必要的一樣簡單#!/bin/bash

如果缺少#!,系統默認運行的系統因系統而異。在我的系統中,我沒有得到你的錯誤,因爲理解你的重定向的shell默認運行。我必須模擬dash將成爲重現錯誤的默認shell的情況。

+0

嗨。對不起,這兩個文件都以#!/ bin/bash開始 – Jimmy

+1

事實:當我將''test.sh''腳本作爲''bash test.sh''運行時,沒有錯誤,但是當我運行它時''dash test.sh''我得到了確切的錯誤。無論您的系統中存在什麼原因,它不是執行腳本的「bash」。 – Louis

+1

啊,這是因爲我跑了「sh test.sh」我想! – Jimmy

7

假設你有./myscript運行腳本,請確保您的腳本開始與

#!/bin/bash 

,而不是#!/bin/sh或其他任何東西。錯誤提示使用另一個比Bash更多的shell。

如果您的腳本的確如此,請檢查/bin/bash是否不是符號鏈接,並且確實是Bash與/bin/bash --version

+0

如上所述,這兩個文件都以#!/ bin/bash開頭 – Jimmy

+1

'/ bin/bash --version'輸出是什麼? – damienfrancois

+0

謝謝你的幫助,但我解決了你的問題,只能選擇一個答案,但我希望upvote幫助:) – Jimmy