fish 함수 인수 인용 및 연결

fish 함수 인수 인용 및 연결

VM을 계속 파괴하고 프로비저닝하므로 ssh는 자주 불만을 표시합니다.NASTY. 음...

어쨌든, 나는 다음과 같이 알려주는 줄에서 문제가 되는 키를 추방하는 피쉬 함수를 작성했습니다 sed.

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

하지만 나는 나 자신을 조금이라도 (주입하는) 것으로부터 나를 보호하기 위해 인용된 명령을 유지하고 싶습니다. 로 포장하면 ''대체되지 않습니다 $argv. 또한 첫 번째 인수만 가져오는 것을 선호 [0]하지만 이를 추가해도 확장되지 않습니다.

답변1

~/.ssh/config지속적으로 다시 만드는 VM에 대한 항목을 만듭니다 . 아래 예. 즉, 파일을 계속 해킹할 필요가 없습니다 ~/.ssh/known_hosts.

Host test-vm-1
    StrictHostKeyChecking no

답변2

''로 묶으면 $argv를 대체하지 않습니다.

당신이 원하는 것은 큰따옴표, 즉 입니다 "$argv". 이는 다른 쉘과 동일합니다.

또한 첫 번째 인수 [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

관련 정보