2014-03-04 77 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