2014-03-04 75 views
0

我昨天開始使用shell腳本,請耐心等待! :-)sed:命令未找到,if語句後

我有這樣一段代碼:

for FILEOUT in *.out 
do 
if [[ $FILEOUT == a*.out ]]; then 
    PATH="./Scalars/" 
elif [[ $FILEOUT == v*.out ]]; then 
    PATH="./Vectors/" 
elif [[ $FILEOUT == t*.out ]]; then 
    PATH="./Tensors/" 
fi 

echo sunday | sed 's/day/night/' 
done 

(我知道最後的說法是愚蠢的,但如果我不能得到那個工作,沒有做更復雜的東西的問題! ) 我得到這個錯誤:

createpyfiles.sh: line 17: sed: command not found 

不用說,sed的工作完美,如果我稍微改變腳本,例如,回聲一個字而不是分配的路徑,以及更廣泛地說,在所有其他上下文。

你能幫忙理解爲什麼嗎?提前致謝!

+1

'這sed'?什麼輸出?因爲你在'sed'之前改變'PATH'並且不要在這裏使用'PATH'嘗試其他的如'MYPATH'或'PATH =「$ PATH:/ mydir」' –

回答

3

在您更改PATH之前,它包含/bin和/或/usr/bin,其中sed位於。當您從PATH中刪除sed的位置後,當然shell再也找不到它了。如果你想添加到PATH你需要做的是這樣

PATH="$PATH:your/dir/here" 
+0

哦!所以問題是變量名!非常感謝! – user2669155

+1

@ user2669155或者你將不得不明確提到像/ bin/sed而不是sed的完整路徑。 –

+0

如果您嘗試使用'PATH'作爲shell查找命令的目錄列表以外的內容,那麼這是一個非常糟糕的變量名稱。 –

0

必須在echo命令把sunday引號之間:

echo "sunday" | sed 's/day/night/' 
+0

不,它的工作原理完全相同,它就是Wumpus和JKB所說的:我正在改變PATH!不管怎麼說,還是要謝謝你! – user2669155