引用并连接 Fish 函数参数

引用并连接 Fish 函数参数

我不断地销毁和配置虚拟机,因此 ssh 经常抱怨我正在被NASTY。嗯……

不管怎样,我写了一个 Fish 函数来消除它告诉我的行上有问题的键sed

function forgethost
   sed -i.bak {$argv}d ~/.ssh/known_hosts
end

但我想保留引用该命令,以保护我免受(注入)自己的影响。当我将它包裹起来时'',它就不会替换$argv。另外,我更愿意只获取第一个参数[0],但是当我添加它时它也不会扩展。

答案1

~/.ssh/config为您不断重新创建的虚拟机创建一个条目。下面的例子。意味着您不必继续破解您的~/.ssh/known_hosts文件。

Host test-vm-1
    StrictHostKeyChecking no

答案2

当我将它包裹在 '' 中时,它不会替换 $argv。

你想要的是双引号,即"$argv".这与其他 shell 中的情况相同。

另外,我更愿意只获取第一个参数 [0],但是当我添加它时它也不会扩展。

在 Fish 中,列表的第一个元素的索引为 1,因此您需要$argv[1].

在一起意味着

function forgethost
   sed -i.bak "$argv[1]"d ~/.ssh/known_hosts
end

当然,如果给出了多个参数,您也可以添加错误处理

if set -q argv[2] # yes, no $
    echo "This only accepts one argument" >&2
    return 1
endt

相关内容