我正在尝试使用 Fish shell 运行 SBT。下面是我想要实现的等效 Bash 脚本:
java -Xmx512M -jar `dirname $0`/sbt-launch.jar "$@"
我在 Fish 文档中看到$@
在 Bash 中可以替换为$argv
在 Fish 中。但我看不出用什么代替dirname $0
。
有人知道 Fish 中的等效脚本吗?
对我来说,$_ 似乎只能通过阅读器/命令行直接工作,或者在脚本来源时工作。
也许这对你有用:
java -Xmx512M -jar (dirname (status -f))/sbt-launch.jar "$argv" # fish
fish
相当于:
java -Xmx512M -jar $(dirname $0)/sbt-launch.jar "$@" # Bash, et al
是
java -Xmx512M -jar (dirname $_)/sbt-launch.jar "$argv" # fish
status
内置和argv
变量fish shell 使用该status
命令返回有关许多内容的信息,包括当前运行脚本的文件名或目录。它还使用argv变量而不是 Bash 的$@
. 此外,fish 的变量是列表,因此您不想像在 Bash 中那样引用它们,除非您尝试将列表的所有内容视为单个字符串。
假设您是从诸如 之类的文件运行它,那么foo.fish
执行此操作的方法是在脚本文件中包含以下行:
java -Xmx512M -jar (status dirname)/sbt-launch.jar $argv