문제

함수에서 배열을 반환하려고합니다. 아래 코드는 작동하지 않습니다.

function testArray
   echo 1 2 3 4
end

set r (testArray)

echo $r[2]
# error

Fish Shell을 사용하여 함수에서 여러 값을 반환하는 올바른 방법은 무엇입니까?

도움이 되었습니까?

해결책 2

설명했듯이 우스운 _fish 기본 라인 분할 메커니즘을 사용할 수 있습니다.

명령 대체의 결과는 Newlines를 분할하여 목록이됩니다 ($IFS)

그래서

  1. 라인 당 하나의 항목을 나열합니다.
  2. 그런 다음 명령 대체에서이를 캡처하십시오.

목록

function __list_public_keys
    for key in ~/.ssh/*.pub
        echo $key
    end
end
산출
$ __list_public_keys
/home/ed8/.ssh/id_rsa.blabla.pub
/home/ed8/.ssh/id_rsa.pub
/home/ed8/.ssh/id_rsa.test.pub

캡처

function __add_keys
    set keys (__list_public_keys)

    echo "[" $keys "]"
end
산출
$ __add_keys
[/home/ed8/.ssh/id_rsa.blabla.pub] [/home/ed8/.ssh/id_rsa.pub] [/home/ed8/.ssh/id_rsa.test.pub]

다른 팁

명령 대체의 결과는 신형 (기술적으로 내용 $IFS, 그러나 IFS를 수정하는 것은 권장되지 않습니다).

그래서 당신은 아마 tr:

function testArray
   echo 1 2 3 4
end
set r (testArray | tr ' ' \n)
echo $r[2]

또는 기능을 직접 출력하도록 기능을 수정하십시오.

function testArray
   echo \n1\n2\n3\n4
end
set r (testArray)
echo $r[2]

https://github.com/fish shell/fish-shell/issues/445 목록을 생성하기위한 더 나은 메커니즘을 추적합니다.

나는 이것이 아직 가능하다고 생각하지 않습니다. 이것을 비교하십시오 문제 Github에서.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top