我正在尝试使用Fish shell运行SBT。下面是我正在努力实现的等效Bash脚本:
java -Xmx512M -jar `dirname $0`/sbt-launch.jar "$@"
我在Fish文档中看到,Bash中的$@
可以替换为Fish中的$argv
。
但我无法看到用dirname $0
取代的内容。
有人知道Fish中的等效脚本吗?
答案 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