我有以下问题:
我有多个 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"
}