bash - 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
解决方案
你做 a PORT++
,这使得PORT
加一。
到你使用的时候sed
,它已经扩展为6380,然后在文件中找不到它。
推荐阅读
- celery - Celery:与正在运行的任务交互/通信
- json - 没有开始双引号的json标签工作
- json - Using nested JSON data in D3
- asp.net-core - ASP.NET Core - 有没有办法使用自定义标签助手来呈现一组元素?
- python - 为什么空的 MySQL 数据库声称有重复项(Python 3)?
- sql - 如何在 postgres 中运行 50 个数据库中的查询?
- python - pytest:如果设置出现问题,如何跳过测试用例并直接进行清理?
- google-cloud-platform - 将 Colab 连接到付费 TPU
- c# - Unable to create an object of type 'ApplicationDbContext'. For the different patterns supported at design time
- amazon-web-services - AWS Glue not deleting or deprecating tables generated over now removed S3 data