Преобразование скрипта Bash в рыбу

Я пытаюсь преобразовать этот скрипт в рыбу: https://github.com/masahide/OmniSSHAgent/blob/main/hack/ubuntu-bash.setup.sh

Это мой прогресс до сих пор:

set OMNISOCATCMD $HOME/omni-socat/omni-socat.exe
export SSH_AUTH_SOCK=$HOME/.ssh/agent.sock

function __get_omnisocat
  echo "Get omni-socat.exe"
  curl https://github.com/masahide/OmniSSHAgent/releases/latest/download/omni-socat.zip \
      -sLo omni-socat.zip
  unzip -o omni-socat.zip -d (dirname $OMNISOCATCMD)
  rm omni-socat.zip
end

function __get_socat
  echo "Install socat"
  sudo apt -y install socat
end


function setup_omnisocat
  [[ -f $OMNISOCATCMD ]]  || __get_omnisocat
  [[ -f /usr/bin/socat ]] || __get_socat
  
  ss -a | grep -q $SSH_AUTH_SOCK
  [[ $status -ne 0 ]]  || return

  rm -f $SSH_AUTH_SOCK
  
  (setsid socat UNIX-LISTEN:$SSH_AUTH_SOCK; fork EXEC:"$OMNISOCATCMD"; nofork &) >/dev/null 2>&1
end

setup_omnisocat

Он должен быть полностью преобразован, за исключением подстановки основной команды в последней функции:

(setsid socat UNIX-LISTEN:$SSH_AUTH_SOCK; fork EXEC:"$OMNISOCATCMD"; nofork &) >/dev/null 2>&1

который вызывает эту ошибку:

omni-socat/ubuntu-fish.setup.fish (line 27): Command substitutions not allowed
  (setsid socat UNIX-LISTEN:$SSH_AUTH_SOCK; fork EXEC:"$OMNISOCATCMD"; nofork &) >/dev/null 2>&1
  ^
from sourcing file omni-socat/ubuntu-fish.setup.fish
.: Error while reading file 'omni-socat/ubuntu-fish.setup.fish'

И я не понимаю, как его преобразовать. Можете вы помочь мне? Спасибо

Баш { grouped cmds; } — это рыба begin; grouped cmds; end, а Баш (run in a subshell) — это fish -c 'run in a subshell'. Вы видели Рыба для пользователей bash?

glenn jackman 23.04.2022 18:11
3 метода стилизации элементов HTML
3 метода стилизации элементов HTML
Когда дело доходит до применения какого-либо стиля к нашему HTML, существует три подхода: встроенный, внутренний и внешний. Предпочтительным обычно...
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
0
1
35
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Нашел правильный способ конвертировать (спасибо @masahide: https://github.com/masahide/OmniSSHAgent/issues/16#issuecomment-1107446991):

setsid nohup socat UNIX-LISTEN:$SSH_AUTH_SOCK,fork EXEC:"$HOME/omni-socat/omni-socat.exe" >/dev/null 2>&1 & disown

Другие вопросы по теме