考虑这个简单的bash片段:
case $OPTION in
1)
IMAGE=${options[0]%.tar}
;;
2)
IMAGE=${options[1]%.tar}
;;
3)
IMAGE=${options[2]%.tar}
;;
4)
IMAGE=${options[3]%.tar}
;;
*)
echo "invalid option"
exit 1
esac
在我的真实剧本中,数字上升到30.这使得它很长。 我可以用某种方式指定具有变量的案例吗?
这样的事情:
case $OPTION in
$i)
IMAGE=${options[$(($i-1))]%.tar}
非常感谢任何指针。
答案 0 :(得分:3)
您可以在单个子句中匹配多个模式:
MG= nx.from_pandas_edgelist(df, 'gene1', 'gene2', edge_attr=['conf','type'],
create_using=nx.MultiGraph())
MG.edges(data=True)
MultiEdgeDataView([('geneA', 'geneB', {'conf': 0.05, 'type': 'method1'}),
('geneA', 'geneB', {'conf': 0.45, 'type': 'method2'}),
('geneA', 'geneC', {'conf': 0.45, 'type': 'method1'}),
('geneA', 'geneD', {'conf': 0.35, 'type': 'method1'})])
如果仍然为您打字太多,您可以使用一些简单的模式匹配:
case $OPTION in
1|2|3:
echo "$OPTION is one, two or three"
;;
esac
答案 1 :(得分:3)
哦,我的,干:
if (( 1 <= OPTION && OPTION <= 30 )); then
IMAGE=${options[OPTION-1]%.tar}
else
echo "invalid option" >&2
exit 1
fi