[英]Keeping Escape Characters in C#
我可能完全錯了,或者忽略了一些顯而易見的事情,但這確實可行。 我正在通過C#使用AWS CLI。 我正在嘗試向命令行發送命令以更改EC2的實例類型
我嘗試了不同的處理方式,以@開頭的字符串,封裝雙引號的單引號等。這是我目前擁有的:
private static void resizeCurrentInstance(string instance)
{
string commands = "/C aws ec2 describe-instances --instance-ids " + instance;
string response = getNewProcess(commands);
JObject convertedResponse = JObject.Parse(response);
int i = 0;
string ReturnString = "";
foreach (JObject item in convertedResponse["Reservations"])
{
if (item["Instances"][i]["InstanceType"].Value<string>().Contains(".large"))
{
string sizeUpCommand = "/C aws ec2 modify-instance-attribute --instance-id" + instance + " --instance-type \"{\"Value\": \"m4.4xlarge\"}\"";
string sizeUpResponse = getNewProcess(sizeUpCommand);
Console.WriteLine("Instance Size inscrease " + sizeUpResponse.ToString());
}
else
{
string sizeDownCommand = "/C aws ec2 modify-instance-attribute --instance-id " + instance + ' --instance-type \"{\"Value\": \"m4.large\"}\"';
string sizeDownResponse = getNewProcess(sizeDownCommand);
Console.WriteLine("Instance Size decrease " + sizeDownResponse.ToString());
}
}
}
問題來自嘗試生成命令字符串以發送到此處的命令行
string sizeUpCommand = "/C aws ec2 modify-instance-attribute --instance-id" + instance + " --instance-type \"{\"Value\": \"m4.4xlarge\"}\""
這是亞馬遜文檔中給出的命令:
aws ec2 modify-instance-attribute --instance-id i-1234567890abcdef0 --instance-type "{\"Value\": \"m1.small\"}"
我試圖弄清楚如何編寫字符串,因此輸出為:“ {\\” Value \\“:\\” m1.small \\“}”
嘗試這個:
"{\\\"Value\\\": \\\"m1.small\\\"}"
如果需要在字符串中保留反斜杠,則可以在\\"
之前使用\\\\
。
但是,您在--instance-id
之后也缺少空格,這會弄亂命令。
所以它應該看起來像這樣:
string sizeUpCommand = "/C aws ec2 modify-instance-attribute --instance-id " + instance + " --instance-type \"{\\\"Value\\\": \\\"m4.4xlarge\\\"}\""
如果那不起作用,則將sizeUpCommand
輸出到控制台並檢查它,以確保它應該是正確的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.