首页 > 解决方案 > Sed with two variable

问题描述

I encountered with behavior incomprehensible to me.

NODES=6
PORT=6379
until [ $NODES -eq 0 ]
do
        ((NEWPORT=PORT++))
        cp cluster-config.conf redis-$NEWPORT.conf
        sed -i -e "s/$PORT/$NEWPORT/g" redis-$NEWPORT.conf
        ((NODES--))
done

This doesn't work But this works

NODES=6
PORT=6379
until [ $NODES -eq 0 ]
do
        ((NEWPORT=PORT++))
        cp cluster-config.conf redis-$NEWPORT.conf
        sed -i -e "s/6379/$NEWPORT/g" redis-$NEWPORT.conf
        ((NODES--))
done

What's the difference between

sed -i -e "s/$PORT/$NEWPORT/g" redis-$NEWPORT.conf

vs

sed -i -e "s/6379/$NEWPORT/g" redis-$NEWPORT.conf

标签: bashsed

解决方案


你做 a PORT++,这使得PORT加一。

到你使用的时候sed,它已经扩展为6380,然后在文件中找不到它。


推荐阅读