2012-07-24 207 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