Optional parameters: Difference between revisions

Added Unix Shell (bash) implementation
(Added Kotlin)
(Added Unix Shell (bash) implementation)
Line 2,280:
apply {{a b} {expr {[string length $b]-[string length $a]}}}
}]</lang>
 
=={{header|Unix Shell}}==
{{works with|bash|4.2}}
<lang bash>#!/usr/bin/env bash
# sort-args
 
data() {
cat <<EOF
123 456 0789
456 0789 123
0789 123 456
EOF
}
 
# sort_table [column NUM | KIND | reverse] ... <INPUT >OUTPUT
# KIND = lexicographical | numeric | human
 
sort_table() {
local opts='-b'
local column=1
while (( $# > 0 )) ; do
case "$1" in
column|col|c) column=${2?Missing column number} ; shift ;;
lexicographical|lex|l) opts+=' -d' ;;
numeric|num|n) opts+=' -g' ;;
human|hum|h) opts+=' -h' ;;
reverse|rev|r) opts+=' -r' ;;
esac
shift
done
eval "sort $opts -k $column,$column -"
}
 
printf "sort defaults\n" ; data | sort_table
printf "sort defaults reverse\n" ; data | sort_table reverse
printf "sort column 2\n" ; data | sort_table col 2
printf "sort column 2 reverse\n" ; data | sort_table col 2 reverse
printf "sort numeric\n" ; data | sort_table numeric
printf "sort numeric reverse\n" ; data | sort_table numeric reverse
</lang>
{{out}}
<pre>
$ ./sort-args.sh
sort defaults
0789 123 456
123 456 0789
456 0789 123
sort defaults reverse
456 0789 123
123 456 0789
0789 123 456
sort column 2
456 0789 123
0789 123 456
123 456 0789
sort column 2 reverse
123 456 0789
0789 123 456
456 0789 123
sort numeric
123 456 0789
456 0789 123
0789 123 456
sort numeric reverse
0789 123 456
456 0789 123
123 456 0789
</pre>
 
=={{header|Ursala}}==
Anonymous user