Bash 别名失败,带有 python 脚本和 argparse 的默认参数



我有以下问题:

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

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 选项将非常有帮助。

任何帮助将不胜感激。

真诚地

谢谢!

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

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

。或者,更好的是,使用单个函数来处理这两种情况:

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

不能在别名中使用变量

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

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"
}

最新更新