无法从字符'U'开始执行脚本

时间:2014-04-23 06:39:33

标签: c bash shell linux-device-driver embedded-linux

我有以下代码片段,它通过C程序执行脚本。

char upgrd_bb[512] = "";    
    sprintf(upgrd_bb,"/usr/bin/./\UPGRD_BB_ALL '%s'", path_argv[5]);
    if(!(system(upgrd_bb)))
    {
    dw_flag = 0;
    printf("Unable to Upgrade BB ");
    }

在交叉编译期间,我收到错误

/home/ubuntu/Documents/FileOper.c:829:14: warning: universal character names are only valid in C++ and C99
/home/ubuntu/Documents/FileOper.c:829:14: error: incomplete universal character name \U
make: *** [/home/ubuntu/Documents/FileOper.o] Error 1

如果我将脚本的名称更改为任何其他字符,则编译正常。任何人都可以专注于此。

提前感谢!!

1 个答案:

答案 0 :(得分:2)

在字符串

"/usr/bin/./\UPGRD_BB_ALL '%s'"

您有序列\U,它被视为Unicode转义序列。如果删除额外的反斜杠以获取

"/usr/bin/./UPGRD_BB_ALL '%s'"

那么你应该全力以赴。

另一方面,如果您需要名称中的额外反斜杠,请将其转义:

"/usr/bin/./\\UPGRD_BB_ALL '%s'"

希望这有帮助!