Fish は便利なんだけど、ところどころ互換性が無くて、Bash/Zsh前提に作られているチュートリアルで困る。
Fish Shell
では文字列内でサブコマンドの結果を展開することができない。
やりたいこと
bash
curl -L "https://hoge.com/docker-compose-$(uname -s)-$(uname -m)" \
-o /usr/local/bin/docker-compose
方法1
予め変数に入れる
set uname_s (uname -s)
set uname_m (uname -m)
curl -L "https://hoge.com/docker-compose-$uname_s-$uname_m" \
-o /usr/local/bin/docker-compose
方法2
つなげる
curl -L "https://hoge.com/docker-compose-"(uname -s)"-"(uname -m) \
-o /usr/local/bin/docker-compose
方法3
Fishを諦めてBashにする
bash -c 'curl -L "https://hoge.com/docker-compose-$(uname -s)-$(uname -m)" \
-o /usr/local/bin/docker-compose'