Fish shell中运行脚本的目录

时间:2010-07-27 13:25:06

标签: bash fish

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

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

我在Fish文档中看到,Bash中的$@可以替换为Fish中的$argv。 但我无法看到用dirname $0取代的内容。

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

3 个答案:

答案 0 :(得分:5)

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

也许这对你有用:

java -Xmx512M -jar (dirname (status -f))/sbt-launch.jar "$argv"      # fish

答案 1 :(得分:1)

fish相当于此:

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

java -Xmx512M -jar (dirname $_)/sbt-launch.jar "$argv"      # fish

答案 2 :(得分:0)

使用 status 内置和 argv 变量

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

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

java -Xmx512M -jar (status dirname)/sbt-launch.jar $argv