引用並連接 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

相關內容