我制作了一个打印出输入的代码:
int main(int argc, char *argv[])
{
printf("%c", *argv[1]);
return 0;
}
当我添加ab
,abcdef
,ac
,*cf
之类的内容时,效果很好,但是当我放置**
或{{1}时它返回2,当我放$$
,$a
等时,它会生成分段错误。我想知道为什么它没有打印出我写的字母。
答案 0 :(得分:3)
假设您正在运行Linux或其他一些UNIX风格,ExecutorService ex = Executors.newSingleThreadExecutor();
for(final String link : links)
{
System.err.println("-- "+i+" --"); //DEBUG
ex.execute(new Runnable(){
@Override
public void run(){
try
{
Analyzer.process(link);
}
catch( Exception e )
{
e.printStackTrace();
}
}
});
i++; //DEBUG
}
ex.shutdown();
引用环境变量a。这是由您的shell扩展的,因为您没有将其设置为值,所以它变为空。
要获取文字字符串$a
,您必须转义您的参数 - 根据您使用的shell,您可以尝试单引号或双引号或使用反斜杠转义$a
$
。
答案 1 :(得分:2)
我假设你使用Linux / Unix / MacOs。而不是运行您的程序尝试echo $$或echo $ 1。这些系统变量被扩展为其他字符串(或根本不扩展)。因此,当没有扩展文本或分段错误时,您将获得它。