sed:在if语句之后找不到命令

时间:2014-03-04 11:37:47

标签: bash sed

我昨天开始编写shell脚本,所以请耐心等待! : - )

我有这段代码:

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

毋庸置疑,如果我稍微改变脚本,例如回复一个单词而不是分配PATH,并且更广泛地说,在其他所有上下文中,sed工作正常。

你能帮忙理解为什么吗?提前谢谢!

2 个答案:

答案 0 :(得分:3)

在您更改PATH之前,它包含/bin和/或/usr/bin,其中sed位于此处。从sed中删除PATH的位置后,shell当然无法再找到它。如果您想添加到PATH,则需要执行类似

的操作
PATH="$PATH:your/dir/here"

答案 1 :(得分:0)

您必须在sunday命令中的引号之间放置echo

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