当*.txt目录中实际存在文件时,以下 bash 代码段效果很好。
for txt in *.txt
do
echo "loading data from $txt"
done
Run Code Online (Sandbox Code Playgroud)
如果没有,文字*.txt会作为 $txt 进入循环(不好)。
如何更改此代码以便在没有*.txt文件时do ... done跳过该块?
function cmakerel {
if expr match "$PWD" '*bld*' >/dev/null ; then
cmake -D....
else
echo "Wrong directory!"
fi
}
Run Code Online (Sandbox Code Playgroud)
cmakerel将调用cmake命令,如果PWD有bld其名称。
但是,我通常会像这样调用这个命令: cmakerel && make check
如何修改上面的代码,使其在失败时返回一个值,从而make check不会调用第二部分?
可能返回某种非零值应该有效。
我目前有这个别名:
alias cmakerel='cmake -DCMAKE_BUILD_TYPE=Release -Wno-dev ../../ && make -j4'
Run Code Online (Sandbox Code Playgroud)
本质上,它会调用 cmakeout-of-source从 PWD进行构建。它工作正常,但按原样,它几乎可以从任何地方运行(我不想要)。
我如何修改这个别名,以便当且仅当字符串bld在我当前的工作目录中时它才运行?
我需要这个改变,因为没有它,我有时会不小心从 tst 目录或其他目录调用这个命令,我只会在那里造成一团糟。