如何在fish中使用bash函数
我有几个bash函数,比如如何在fish中使用bash函数,bash,fish,Bash,Fish,我有几个bash函数,比如 #!/bin/sh git-ci() { ... } 当我不使用fish时,我在~/.bash\u配置文件中有一个源代码~/.my\u函数行,但现在它不工作了 我可以将bash函数用于fish吗?或者,唯一的方法是将它们转换为fish函数,然后通过funcsave xxx保存?在fish中定义函数的语法与POSIX shell和bash非常不同 POSIX函数: hi () { echo hello } 翻译为: function hi
#!/bin/sh
git-ci() {
...
}
当我不使用fish时,我在~/.bash\u配置文件中有一个源代码~/.my\u函数行,但现在它不工作了
我可以将bash函数用于fish吗?或者,唯一的方法是将它们转换为fish函数,然后通过funcsave xxx保存?在fish中定义函数的语法与POSIX shell和bash非常不同 POSIX函数:
hi () {
echo hello
}
翻译为:
function hi
echo hello
end
脚本语法还有其他不同之处。有关示例,请参见中标题为“块”的部分
因此,基本上不可能在fish中使用为bash编写的函数,它们与bash和csh一样不同。您必须检查所有函数并将其转换为fish语法。在fish中定义函数的语法与POSIX shell和bash非常不同 POSIX函数:
hi () {
echo hello
}
翻译为:
function hi
echo hello
end
脚本语法还有其他不同之处。有关示例,请参见中标题为“块”的部分
因此,基本上不可能在fish中使用为bash编写的函数,它们与bash和csh一样不同。您必须检查所有函数,并将它们转换为fish语法。正如@Barmer所说,fish不关心兼容性,因为它的目标之一是 理智的脚本 fish是完全可编写脚本的,其语法简单、清晰且一致。你再也不会给以撒写信了 鱼人们认为bash是疯狂的,我个人同意 您可以做的一件事是将bash函数放在单独的文件中,并从fish中将它们作为函数调用 例如: 以前
#!/bin/bash
git-ci() {
...
}
some_other_function() {
...
}
之后
然后将脚本文件放在路径中的某个位置。现在你可以从fish中调用它们
希望这能有所帮助。正如@Barmer所说,fish并不关心兼容性,因为它的目标之一是 理智的脚本 fish是完全可编写脚本的,其语法简单、清晰且一致。你再也不会给以撒写信了 鱼人们认为bash是疯狂的,我个人同意 您可以做的一件事是将bash函数放在单独的文件中,并从fish中将它们作为函数调用 例如: 以前
#!/bin/bash
git-ci() {
...
}
some_other_function() {
...
}
之后
然后将脚本文件放在路径中的某个位置。现在你可以从fish中调用它们
希望这会有所帮助。如果您不想更改所有语法,一种解决方法是创建一个运行bash脚本并直接传递参数的fish函数 范例 如果你有这样一个函数 早希{ 回声你好,1美元! } 您只需通过剥离函数部分对其进行更改,并将其保存为可执行脚本 回声你好,1美元! 然后创建一个fish函数,该函数调用名为sayhi.fish的脚本 函数sayhi 运行bash脚本并传递所有参数 /bin/bash-absolute/path/to/bash/script$argv 终止 瞧,就像你平时那样运行它
> sayhi ivkremer
Hello, ivkremer!
如果不想更改所有语法,一种解决方法是简单地创建一个fish函数,该函数运行bash脚本并直接传递参数 范例 如果你有这样一个函数 早希{ 回声你好,1美元! } 您只需通过剥离函数部分对其进行更改,并将其保存为可执行脚本 回声你好,1美元! 然后创建一个fish函数,该函数调用名为sayhi.fish的脚本 函数sayhi 运行bash脚本并传递所有参数 /bin/bash-absolute/path/to/bash/script$argv 终止 瞧,就像你平时那样运行它
> sayhi ivkremer
Hello, ivkremer!
/bin/sh通常不是bash。@Cyrus当你源文件时,shebang行被忽略,你必须翻译它们。/bin/sh通常不是bash。@Cyrus当你源文件时,shebang行被忽略,你必须翻译它们。我知道语法的不同。这很可悲。兼容性不是fish的目标。这不会让我更高兴,但我认为重写我的函数并不难。你有两个选择:切换到fish并重写函数,或者继续使用bash。zsh和bash都符合POSIX,但fish不是。设计师们似乎做了一个很糟糕的决定。我知道语法是如何不同的。这很可悲。兼容性不是fish的目标。这不会让我更高兴,但我认为重写我的函数并不难。你有两个选择:切换到fish并重写函数,或者继续使用bash。zsh和bash都符合POSIX,但fish不是。看来设计师们的决定很糟糕。