![引用并连接 Fish 函数参数](https://linux22.com/image/97814/%E5%BC%95%E7%94%A8%E5%B9%B6%E8%BF%9E%E6%8E%A5%20Fish%20%E5%87%BD%E6%95%B0%E5%8F%82%E6%95%B0.png)
我不断地销毁和配置虚拟机,因此 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