在 C# 中保留转义字符
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\"}”。 =13=]
试试这个:
"{\\"Value\\": \\"m1.small\\"}"
如果您需要在字符串中保留反斜杠,则在 \"
之前使用 \
。
但是您在 --instance-id
之后还缺少一个 space,这会使命令混乱。
所以它应该看起来像这样:
string sizeUpCommand = "/C aws ec2 modify-instance-attribute --instance-id " + instance + " --instance-type \"{\\"Value\\": \\"m4.4xlarge\\"}\""
如果这不起作用,则将 sizeUpCommand
输出到控制台并检查它以确保它是应该的。
我可能完全做错了,或者忽略了一些显而易见的事情,但就是这样。我正在通过 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\"}”。 =13=]
试试这个:
"{\\"Value\\": \\"m1.small\\"}"
如果您需要在字符串中保留反斜杠,则在 \"
之前使用 \
。
但是您在 --instance-id
之后还缺少一个 space,这会使命令混乱。
所以它应该看起来像这样:
string sizeUpCommand = "/C aws ec2 modify-instance-attribute --instance-id " + instance + " --instance-type \"{\\"Value\\": \\"m4.4xlarge\\"}\""
如果这不起作用,则将 sizeUpCommand
输出到控制台并检查它以确保它是应该的。