Bash别名失败了python脚本和argparse的默认参数?

时间:2016-05-25 14:23:24

标签: python bash alias default-arguments

我有以下问题:

我有一个python脚本的多个bash别名: python脚本使用带有两个arugemnts的arg-parse,一个是可选的。

testing.py -i value1
testing.py -i value1 -e value2

alias test1=' ./testing.py -i $1' 

这可以按预期工作

alias test2=' ./testing.py -i $1 -e $2'

这不起作用!

最终,想从命令行执行此操作:

test2 value1 value2

我搜索过bash函数,并不完全确定它是否能解决我的问题。 我已经尝试了很多方法来逃避,qoute,黑客攻击它,重新安排..等等..没有骰子

能够将bash $2中的第二个默认参数传递给python脚本的-e argparse选项会非常有用。

任何帮助将不胜感激..

此致,

谢谢!

2 个答案:

答案 0 :(得分:0)

别名是简单的前缀扩展。他们不知道他们的论点是什么,也不能运行条件逻辑。

test1() { ./testing.py -i "$1"; }

test2() { ./testing.py -i "$1" -e "$2"; }

......或者更好的是,一个处理这两种情况的函数:

testfunc() { ./testing.py ${1+ -i "$1"} ${2+ -e "$2"}; }

答案 1 :(得分:0)

您不能在别名中使用变量

(或者更准确地说,你可以,但不是你想要的)

test1 value1

转换为

./testing.py -i value1

test2 value1 value2

转换为

./testing.py -i -e value1 value2

因为$1$2是空字符串(最有可能)。

使用功能

简单的解决方案是创建bash功能

test2() {
    ./testing.py -i "$1" -e "$2"
}