OILS / benchmarks / compute / palindrome.sh View on Github | oilshell.org

40 lines, 24 significant
1#!/usr/bin/env bash
2#
3# Usage:
4# benchmarks/compute/palindrome.sh unicode
5# benchmarks/compute/palindrome.sh bytes
6
7#shopt -s globasciiranges
8
9main() {
10 if test "$1" = "unicode"; then
11 # Redirects don't work yet in Oil!
12 #echo "palindrome.sh: unicode" 1>&2
13 true
14 else
15 LANG=C
16 fi
17
18 while read -r line; do
19 local n=${#line}
20
21 if test $n -eq 0; then # skip blank lines
22 continue
23 fi
24
25 h=$((n / 2)) # floor division
26 local palindrome=T
27 for (( i = 0; i < h; ++i )); do
28 #echo ${line:i:1} ${line:n-1-i:1}
29 if test "${line:i:1}" != "${line:n-1-i:1}"; then
30 palindrome=''
31 fi
32 done
33
34 if test -n "$palindrome"; then
35 printf '%s\n' "$line"
36 fi
37 done
38}
39
40main "$@"