我试图实现一个简单的字符串比较来获取文件的类型(使用其扩展名),如下所示:
extract_pkg: $(PKG)
$(eval EXT := $(suffix $(PKG)))
@echo $(EXT)
ifeq ($(EXT), .zip)
@echo "is zip file"
else
@echo "is not a zip file"
endif
extract_pkg : PKG = mypkg.zip
Run Code Online (Sandbox Code Playgroud)
但是,当我运行它时,它会进入else分支.我的猜测是,它与点有关,但我没有找到解决方案.谢谢你的帮助 !
编辑1:基本代码实际上有点像以下,它按预期工作:
test_cmp:
ifeq (.zip,.zip)
@echo ".zip==.zip"
endif
ifeq (zip,zip)
@echo "zip==zip"
endif
Run Code Online (Sandbox Code Playgroud)
因此问题出在其他地方!
我正在使用这个:
latex(data, cgroup=c("sample1", "sample2"), n.cgroup=c(2,2), file="")
Run Code Online (Sandbox Code Playgroud)
生成一个 tex 表。
输出如下所示:
\begin{table}[!tbp]
\begin{center}
\begin{tabular}{lrlrl}
\hline\hline
\multicolumn{1}{l}{sample1}&\multicolumn{1}{c}{sample2}&\multicolumn{1}{c}{abs reads}&\multicolumn{1}{c}{rel reads}&\multicolumn{1}{c}{abs reads.1}&\multicolumn{1}{l}{rel reads.1}\tabularnewline
\hline
...
%the content%
...
\hline
\end{tabular}
\end{center}
\end{table}
Run Code Online (Sandbox Code Playgroud)
问题:如何改变这个:
\begin{tabular}{lrlrl}
Run Code Online (Sandbox Code Playgroud)
像这样的事情:
\begin{tabular}{lrrrr}
Run Code Online (Sandbox Code Playgroud)
使用乳胶功能?
是否有可能做类似以下的事情(以及如何?)(,或者为什么不呢?):
MATCH="--opt1 | --opt2"
while true ; do
case $1 in
$MATCH)
echo "option $2" found;
shift 2;;
*)
unknown option; exit 1;
esac
done
Run Code Online (Sandbox Code Playgroud)
因为我不明白这不起作用.但是,只有像MATCH =" - opt1"这样的替代方案就可以了.
编辑1:可能的解决方案
可以简单地检查给定选项是否出现在多个允许选项的字符串中,而不是使用case语句,例如通过使用grep和if.要动态地完成它,可以考虑以下解决方案,它也可能与case语句结合或嵌入:
while true ; do
if [ -n "$(echo $MATCHES|grep -- $1)" ]; then
echo "found option $1 with value $2"
shift 2
fi
done
Run Code Online (Sandbox Code Playgroud)