2012-07-24 203 views
0

我试图把一个变量放入一个被放入文件的行中。输出变量? (bash)

的代码看起来是这样的:

echo "cd ~/Desktop/BukkitServer/" >> start.command 
echo "java -Xms$ramM -Xmx$ramM -jar CraftBukkit.jar" >> start.command 
chmod +x start.command 

看我怎么把$ RAM在第二行?它结束为

java -XmsM -XmxM -jar CraftBukkit.jar 

我如何得到它把任何$ ram在其适当的地方?

谢谢:)

编辑:

echo 'java -Xms{$ram}M -Xmx{$ram}M -jar craftbukkit.jar' >> start.command

产生java -Xms{$ram}M -Xmx{$ram}M -jar craftbukkit.jar

echo "java -Xms{$ram}M -Xmx{$ram}M -jar craftbukkit.jar" >> start.command

产生java -Xms{120}M -Xmx{120}M -jar craftbukkit.jar

回答

2

$用于标记变量。用你的命令告诉echo将java -Xms后跟$ramM变量的内容放在文件中。

你必须定义变量

ram=128 
echo "java -Xms${ram}M" 

的值会产生

java -Xms128M 

注意,你将不得不使用括号{}来分隔变量名,否则shell将不知道在哪里你的变量完成。

如果你想要把文字$你将不得不使用单引号(shell将不解释字符串的内容)。

echo 'java -Xms$ramM' 

产生

java -Xms$ramM 
+0

啊,谢谢。我已经定义了$ ram,但不知道{}。唯一的问题是现在有数字的括号。如: 'java -Xms {200} M -Xmx {200} M -jar craftbukkit.jar' – 2012-07-24 06:18:45

+0

你把{}放在哪里?请用新版本编辑你的问题(最后添加它,并保留原来的版本,否则将难以遵循) – Matteo 2012-07-24 06:23:19

+0

我已将它添加到操作 – 2012-07-24 06:27:51

1

改变你的第二行:

echo 'java -Xms'$ram'M -Xmx'$ram'M -jar CraftBukkit.jar' >> start.command

+0

这将产生与OP已经完全相同的输出('java -XmsM -XmxM -jar CraftBukkit.jar') – Matteo 2012-07-24 06:19:36

+0

@matteo NO !! output will be fine。虽然这不是与你一样做事的优雅方式。在这种情况下,整个表达式被分成4个子字符串,最后的输出是4个子字符串的连接。 – 2012-07-24 06:26:55

+0

对不起,你是对的。 – Matteo 2012-07-24 06:53:05