今天刚开始玩fish shell,试图翻译一个Bash函数。它可以工作,但我想知道是否有一种更优雅的方式来传递fish中的所有参数。
这是在Docker容器中运行Elixir命令的Bash函数。我使用$*
是这样的:
function elixir () {
docker run --rm -it -v $(pwd):/app -w /app elixir \
sh -ci "elixir $*"
}
在fish中,我这样使用$argv[1..-1]
:
function elixir --description "command to run Elixir in Docker"
docker run --rm -it -v (pwd):/app -w /app elixir elixir $argv[1..-1]
end
有没有更优雅的方式来做到这一点?谢谢你,谢谢
1条答案
按热度按时间bxpogfeg1#
在fish中,所有的变量都是列表,
$var
扩展到整个列表,每个元素一个参数(所以没有单词分割或任何东西)。所以只要
$argv
就足够了,没有必要指定[1..-1]
。