F Y*_*oob 3 unix bash shell scripting for-loop
我在UNIX上使用bash(sparc 10)
for file in $SCPATH/$LIBNAME/*.{gob,c,cpp,h};
do
ln -s $file;
done;
Run Code Online (Sandbox Code Playgroud)
问题是:如果没有扩展名为'c'的文件,它会将" .c"放在$ file中,而ln -s将创建一个指向' .c' 的链接.这是一个知道问题吗?我怎样才能绕过它(除了显而易见的'如果不是*.c'黑客).
你需要在循环之前设置nullglob
shopt -s nullglob
Run Code Online (Sandbox Code Playgroud)
nullglob: 如果设置,bash允许不匹配任何文件的模式(参见上面的Pathname Expansion)扩展为空字符串,而不是自己.
当您完成并想要将其重置为原始行为时,请使用:
shopt -u nullglob
Run Code Online (Sandbox Code Playgroud)
正如Dennis Williamson在其中一条评论中指出的那样.