我正在使这个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也没有被替换。
任何解决方法?谢谢。
您是否具有变量名idM
?接口:
printf "java -Xms512M -Xmx$idM -XX ...
您可能是想
printf "java -Xms512M -Xmx${id}M -XX
但是在这种情况下,您可能想要:
printf "java -Xms512M -Xmx%dM -XX ..." "$id"
但是使用名为“ id”的变量表示内存分配池的最大大小似乎很奇怪。我建议使用更好的名称。