Как я могу преобразовать эту функцию bash в оболочку рыбы

Я пробовал рыбную оболочку 2.0, чтобы заменить bash. Я пытаюсь преобразовать следующую функцию bash в функцию рыбы, но это дает мне ад. У меня есть несколько подобных функций, поэтому, если кто-то может указать мне в правильном направлении с примером, я был бы очень благодарен

connect() { if [ "$2" != "" ] then ssh -ti ~/.ssh/work/id_rsa user@host$1.domain.com "sudo ssh $2" fi if [ "$2" == "" ] then ssh -ti ~/.ssh/work/id_rsa user@host$1.domain.com "sudo -i" fi } 

Попробовал просто заменить $ 1 и $ 2 на $ argv [1] и $ argv [2], но он жалуется, что не смог найти конец блока. Я знаю его, потому что скриптовый синтаксис совершенно другой в рыбе. Я попытался начать с более простой функции и имел проблемы с выяснением того, как заставить ее сделать одну вещь, если передана 1 переменная, а другая вещь, если переданы 2 переменные:

 function testvarz switch "$argv[2]"; case "" echo "no second variable passed" case != "" echo "second variable passed" end end 

но это не сработает, если вы передаете 2 переменную, она ничего не делает, если вы пройдете 1, она жалуется на

Вот работающая функция, аналогичная вашей тестовой функции.

  function testvarz switch (count $argv) case 0 echo 'zero' case 1 echo "one $argv[1]" case 2 echo "two $argv[1] $argv[2]" case '*' echo 'else' end end 

Вы можете использовать аналогичную структуру для своей функции connect .

Кстати, вы также должны использовать $# в своей функции Bash вместо того, чтобы полагаться на $2 , равным нулю. Вы также можете использовать оператор case в Bash.