5

我正在尝试使用 Fish shell 运行 SBT。下面是我想要实现的等效 Bash 脚本:

java -Xmx512M -jar `dirname $0`/sbt-launch.jar "$@"

我在 Fish 文档中看到$@在 Bash 中可以替换为$argv在 Fish 中。但我看不出用什么代替dirname $0

有人知道 Fish 中的等效脚本吗?

4

3 回答 3

5

对我来说,$_ 似乎只能通过阅读器/命令行直接工作,或者在脚本来源时工作。

也许这对你有用:

java -Xmx512M -jar (dirname (status -f))/sbt-launch.jar "$argv"      # fish
于 2010-11-12T06:12:16.830 回答
1

fish相当于:

java -Xmx512M -jar $(dirname $0)/sbt-launch.jar "$@"     # Bash, et al

java -Xmx512M -jar (dirname $_)/sbt-launch.jar "$argv"      # fish
于 2010-07-27T15:58:22.543 回答
0

使用status内置和argv变量

fish shell 使用该status命令返回有关许多内容的信息,包括当前运行脚本的文件名或目录。它还使用argv变量而不是 Bash 的$@. 此外,fish 的变量是列表,因此您不想像在 Bash 中那样引用它们,除非您尝试将列表的所有内容视为单个字符串。

假设您是从诸如 之类的文件运行它,那么foo.fish执行此操作的方法是在脚本文件中包含以下行:

java -Xmx512M -jar (status dirname)/sbt-launch.jar $argv
于 2021-05-21T15:28:02.580 回答