diff --git a/seq.in b/seq.in index 5906acb0d..bde7241c7 100755 --- a/seq.in +++ b/seq.in @@ -1,37 +1,33 @@ #!@prefix@/bin/fish -function seq -d "Print a sequnce of numbers" +set -l from 1 +set -l step 1 +set -l to 1 - set -l from 1 - set -l step 1 - set -l to 1 +switch (count $argv) + case 1 + set to $argv[1] - switch (count $argv) - case 1 - set to $argv[1] + case 2 + set from $argv[1] + set to $argv[2] - case 2 - set from $argv[1] - set to $argv[2] + case 3 + set from $argv[1] + set step $argv[2] + set to $argv[3] - case 3 - set from $argv[1] - set step $argv[2] - set to $argv[3] - - case '*' - printf (_ "%s: Expected 1, 2 or 3 arguments, got %d\n") seq (count $argv) - return 1 - - end - - for i in $from $step $to - if not echo $i | grep '^-\?[0-9]*\(\|.[0-9]\+\)$' >/dev/null - printf (_ "%s: '%s' is not a number\n") seq $i - return 1 - end - end - - echo "for( i=$from; i<$to ; i+=$step ) i;" | bc + case '*' + printf (_ "%s: Expected 1, 2 or 3 arguments, got %d\n") seq (count $argv) + return 1 end + +for i in $from $step $to + if not echo $i | grep '^-\?[0-9]*\(\|.[0-9]\+\)$' >/dev/null + printf (_ "%s: '%s' is not a number\n") seq $i + return 1 + end +end + +echo "for( i=$from; i<=$to ; i+=$step ) i;" | bc