将bash脚本转换为fish
我想将Bash脚本转换为Fish脚本,以测试文件将bash脚本转换为fish,bash,shell,fish,Bash,Shell,Fish,我想将Bash脚本转换为Fish脚本,以测试文件.nvmrc是否存在 Bash脚本: ## Auto load nvm when there's a .nvmrc file OLD_PWD="" promptCommand() { if [ "$OLD_PWD" != "$PWD" ] ; then OLD_PWD="$PWD" if [ -e .nvmrc ] ; then nvm use; fi
.nvmrc
是否存在
Bash脚本:
## Auto load nvm when there's a .nvmrc file
OLD_PWD=""
promptCommand() {
if [ "$OLD_PWD" != "$PWD" ] ;
then
OLD_PWD="$PWD"
if [ -e .nvmrc ] ;
then nvm use;
fi
fi
}
export PROMPT_COMMAND=promptCommand
和鱼脚本(不工作):
首先,fish的
如果不使用这个词,那么。它刚刚不见了
所以
变得公正
if [ "$OLD_PWD" != "$PWD" ]
(如果
,则与其他类似)
第二,
OLD_PWD="$PWD"
不是有效的fish脚本(它会告诉您)。使用
第三,目前为止,这个函数已经定义,但从未运行过。当PWD发生变化时,您需要某种方法来执行它。而且,幸运的是,fish有一种方法可以定义在变量更改时运行的函数,即--on variable VARNAME
选项到function
因此,您的解决方案如下所示:
function nvm_prompt --on-variable PWD
if [ "$OLD_PWD" != "$PWD" ]
set -g OLD_PWD "$PWD"
if [ -e .nvmrc ]
bass source ~/.nvm/nvm.sh --no-use ';' nvm use
end
end
end
您甚至可以取消$OLD_PWD检查,也可以不取消,因为在执行此操作时也会触发事件,例如cd.
(即变量再次设置为相同的值)
此外,我假设该名称意味着它在显示提示时运行,而不是它本身实际显示任何内容-在这种情况下,您可以将其粘贴到fish_提示符
函数中(尝试funced fish_提示符
和funcsave fish_提示符
)。首先,鱼的如果
不使用这个词,那么
。它刚刚不见了
所以
变得公正
if [ "$OLD_PWD" != "$PWD" ]
(如果
,则与其他类似)
第二,
OLD_PWD="$PWD"
不是有效的fish脚本(它会告诉您)。使用
第三,目前为止,这个函数已经定义,但从未运行过。当PWD发生变化时,您需要某种方法来执行它。而且,幸运的是,fish有一种方法可以定义在变量更改时运行的函数,即--on variable VARNAME
选项到function
因此,您的解决方案如下所示:
function nvm_prompt --on-variable PWD
if [ "$OLD_PWD" != "$PWD" ]
set -g OLD_PWD "$PWD"
if [ -e .nvmrc ]
bass source ~/.nvm/nvm.sh --no-use ';' nvm use
end
end
end
您甚至可以取消$OLD_PWD检查,也可以不取消,因为在执行此操作时也会触发事件,例如cd.
(即变量再次设置为相同的值)
此外,我假设该名称意味着它在显示提示时运行,而不是它本身实际显示任何内容-在这种情况下,您可以将其粘贴到fish_提示符
函数中(尝试funced fish_提示符
和funcsave fish_提示符
)。记住[
本质上是test
命令的别名,因此您需要在括号中加空格,就像bash一样。更重要的是,PROMPT_命令变量在fish中没有任何作用。请参阅。大家好,我已经用您的评论编辑了我的第一篇文章,但没有结果^问题。如果您想知道如何在fish中执行特定操作,请将该操作隔离并单独询问——但这应该是一个关于fish的问题;在一个只有fish专业人士才能回答的问题上添加bash标签是没有充分理由的。记住[
本质上是test
命令的别名,因此您需要在括号中加空格,就像bash一样。更重要的是,PROMPT_命令变量在fish中没有任何作用。请参阅。大家好,我已经用您的评论编辑了我的第一篇文章,但没有结果^问题。如果您想知道如何在fish中执行特定操作,请隔离该操作并单独询问——但这应该是一个关于fish的问题;在一个只有fish专家才能回答的问题上添加bash标签是没有道理的。感谢您的良好解释!我添加了编辑带有--在变量上
的函数,工作非常好:)函数nvm_提示符--在变量PWD上
谢谢你的解释!我添加了带有--在变量上
的编辑函数,工作非常好:)函数nvm_提示符--在变量PWD上