我在UNIX上使用bash(sparc 10)
for file in $SCPATH/$LIBNAME/*.{gob,c,cpp,h}; do ln -s $file; done;
问题是:如果没有扩展名为“c”的文件,它将把“ .c”放在$ file中,而ln -s会创build一个到 .c 的链接 。 这是一个知道的问题? 我怎么能解决它(除了明显的“如果不* .c”黑客)。
你需要在循环之前设置nullglob
shopt -s nullglob
nullglob:如果设置,bash允许不匹配任何文件的模式(参见上面的路径名扩展)扩展为空字符串,而不是它们自己。
完成后,要将其重置为原始行为,请使用:
shopt -u nullglob
正如丹尼斯·威廉姆森在其中一个评论中指出的那样。