Printf无法使用通过bash读取命令[保持]获得的输入

问题描述 投票:0回答:1

我正在使这个BASH脚本“自动”设置游戏服务器(minecraft),尽管与我的问题无关。真正的问题是:我正在使用读取功能从用户读取不同的值,并且代码的所有其他部分均正常工作,但是当我尝试制作包含用户输入的文件时,它消失了:

read -p "Value:   " id
printf "java -Xms512M -Xmx$idM -XX:+UseG1GC -XX:+UnlockExperimentalVMOptions -XX:MaxGCPauseMillis=100 -XX:+DisableExplicitGC -XX:TargetSurvivorRatio=90 -XX:G1NewSizePercent=50 -XX:G1MaxNewSizePercent=80 -XX:G1MixedGCLiveThresholdPercent=35 -XX:+AlwaysPreTouch -XX:+ParallelRefProcEnabled -Dusing.aikars.flags=mcflags.emc.gs -jar spigot-$version.jar" >start.sh

事实是,应使用任何INT值替换id,但也应替换M。

让我们举个例子,以便您更好地理解:我输入2500但是当我打开start.sh时,该部分看起来像这样:-XmxM消失了,INT也没有被替换。

任何解决方法?谢谢。

bash sh
1个回答
2
投票

您是否具有变量名idM?接口:

printf "java -Xms512M -Xmx$idM -XX ...

您可能是想

printf "java -Xms512M -Xmx${id}M -XX

但是在这种情况下,您可能想要:

printf "java -Xms512M -Xmx%dM -XX ..." "$id"

但是使用名为“ id”的变量表示内存分配池的最大大小似乎很奇怪。我建议使用更好的名称。

© www.soinside.com 2019 - 2024. All rights reserved.