首页 > 解决方案 > 双反斜杠和单反斜杠在命令行上产生相同的字符串

问题描述

int main(int argc, char **argv) {
char *str;
str = argv[1]; 
printf("%s", str);
return 0; }

当使用这两个字符串执行程序时:

$./program "\abc"
$./program "\\abc"

两者都运行将相同的字符串存储在str变量中,如str = \\abc.

运行时如何获得四个反斜杠\\abc或运行时如何获得单个反斜杠\abc

标签: bash

解决方案


您永远不会从 获得四个反斜杠\\,但如果您想按字面传递字符串,请使用单引号

将字符括在单引号 ( ') 中会保留引号内每个字符的文字值。单引号之间不能出现单引号,即使前面有反斜杠。

例如:

./program '\abc'   # passes a four-character string: \ a b c
./program '\\abc'  # passes a five-character string: \ \ a b c

推荐阅读