40
my-fish-script a b c d

2 番目の引数以降のすべての引数を取得したいとしますb c d

bash では、 を使用shiftして最初の引数をダンプし、残りの引数にアクセスできます"$@"

魚の殻を使ってどのように問題を解決しますか?

4

3 に答える 3

65

fish では、引数は$argvリストに含まれています。リストのスライスを使用して、要素の範囲にアクセスします。たとえば$argv[2..-1]、2 番目から最後までのすべての引数を返します。

例えば

function loop --description "loop <count> <command>"
  for i in (seq 1 $argv[1])
    eval $argv[2..-1]
  end
end

使用法

$ loop 3 echo hello world
hello world
hello world
hello world
于 2014-06-07T04:30:25.627 に答える
12

私の意見では、より読みやすい read を使用することもできます。

function loop
  echo $argv | read -l count command
  for i in (seq 1 $count)
    eval $command
  end
end

これは、最初の引数以外を使用する場合に特に効果的です。

echo $argv | read -l first second rest
于 2014-06-09T15:30:18.853 に答える