我正在使用ubuntu并使用" / bin / bash"作为我的默认bash。 我有一个简单的c程序(test_arg.c)来打印参数。
#include <stdio.h>
void
main(int argc, char **argv)
{
for(int i=0; i < argc; i++) {
printf("arg[%d]:%s \n", i, argv[i]);
}
}
当我尝试传递具有双引号的参数时,它可以正常工作。
ubuntu@ubuntu:~$ ./test_arg.out 1 2 3 "4 5 6"
arg[0]:./test_arg.out
arg[1]:1
arg[2]:2
arg[3]:3
arg[4]:4 5 6
如果我使用bash变量来存储参数,那么它就不会按预期工作。
ubuntu@ubuntu:~$ arg="1 2 3 \"4 5 6\""
ubuntu@ubuntu:~$ ./a.out $arg
arg[0]:./a.out
arg[1]:1
arg[2]:2
arg[3]:3
arg[4]:"4
arg[5]:5
arg[6]:6"
我必须使用变量来存储参数。我尝试了不同的选择但失败了。感谢任何建议。