@@ -40,10 +40,9 @@ readonly PROG_VERSION='2.5.0-dev'
4040#  util functions
4141# ###############################################################################
4242
43- #  NOTE: $'foo' is the escape sequence syntax of bash
44- readonly  ec=$' 033円 ' #  escape char
45- readonly  eend=$' 033円 [0m' #  escape end
46- readonly  nl=$' \n ' #  new line
43+ readonly  red=' 033円[1;31m' ' 033円[0m' 
44+ readonly  jar_color=' 033円[1;35m' ' 033円[1;32m' 
45+ 4746#  How to delete line with echo?
4847#  https://unix.stackexchange.com/questions/26576
4948# 
@@ -52,11 +51,15 @@ readonly nl=$'\n' # new line
5251#  echo -e "033円[1K"
5352#  Or everything on the line, regardless of cursor position:
5453#  echo -e "033円[2K"
55- readonly  clear_line=$ '033円 [2K\r ' 
54+ readonly  clear_line=' 033円[2K\r' 
5655
57- redEcho () {
56+ redPrint () {
5857 #  -t check: is a terminal device?
59-  [ -t  1 ] &&  echo  " ${ec} [1;31m$* $eend " ||  echo  " $* " 
58+  if  [ -t  1 ];  then 
59+  printf  " ${red} %s${normal} \n" " $* " 
60+  else 
61+  printf  ' %s\n' " $* " 
62+  fi 
6063}
6164
6265#  Getting console width using a bash script
@@ -72,20 +75,20 @@ printResponsiveMessage() {
7275
7376 local  message=" $* " 
7477 #  http://www.linuxforums.org/forum/red-hat-fedora-linux/142825-how-truncate-string-bash-script.html
75-  echo  -n  " $ clear_line${message: 0: columns} " >&2 
78+  printf " ${ clear_line} %s " " ${message: 0: columns} " >&2 
7679}
7780
7881clearResponsiveMessage () {
7982 if  !  $show_responsive  ||  [ !  -t  2 ];  then 
8083 return 
8184 fi 
8285
83-  echo  -n  " $clear_line " >&2 
86+  printf " %b " " $clear_line " >&2 
8487}
8588
8689die () {
8790 clearResponsiveMessage
88-  redEcho  " Error: $* " >&2 
91+  redPrint  " Error: $* " >&2 
8992 exit  1
9093}
9194
@@ -95,7 +98,9 @@ usage() {
9598 #  shellcheck disable=SC2015
9699 [ " $exit_code " !=  0 ] &&  local  -r out=/dev/stderr ||  local  -r out=/dev/stdout
97100
98-  (( $#  >  0 )) &&  redEcho " $* $nl " > $out 
101+  #  NOTE: $'foo' is the escape sequence syntax of bash
102+  local  -r nl=$' \n ' #  new line
103+  (( $#  >  0 )) &&  redPrint " $* $nl " > $out 
99104
100105 cat > $out  << EOF 
101106Usage: ${PROG}  [OPTION]... PATTERN 
144149}
145150
146151progVersion () {
147-  echo  " $PROG  $PROG_VERSION " 
152+  printf ' %s\n ' " $PROG  $PROG_VERSION " 
148153 exit 
149154}
150155
@@ -227,7 +232,7 @@ while (($# > 0)); do
227232 break 
228233 ;;
229234 -* )
230-  usage 2 " ${PROG} : unrecognized option '1ドル '" 
235+  usage 2 " Error : unrecognized option '1ドル '" 
231236 ;;
232237 * )
233238 args=(${args[@]: +" ${args[@]} "   " 1ドル " 
@@ -319,15 +324,15 @@ listZipEntries() {
319324 #  exit code is 1, and print 'Empty zipfile.'
320325 if  [ " $msg " !=  ' Empty zipfile.' ;  then 
321326 clearResponsiveMessage
322-  redEcho  " fail to list zip entries of $zip_file , ignored: $msg " >&2 
327+  redPrint  " fail to list zip entries of $zip_file , ignored: $msg " >&2 
323328 fi 
324329 return  0
325330 }
326331 fi 
327332
328333 " ${command_to_list_zip_entries[@]} " " $zip_file " ||  {
329334 clearResponsiveMessage
330-  redEcho  " fail to list zip entries of $zip_file , ignored!" >&2 
335+  redPrint  " fail to list zip entries of $zip_file , ignored!" >&2 
331336 return  0
332337 }
333338}
@@ -344,17 +349,18 @@ searchJarFiles() {
344349 jar_files=" $( find " ${dirs[@]} " " ${find_iname_options[@]} " ) " 
345350 [ -n  " $jar_files " ||  die " No ${extensions[*]}  file found!" 
346351
347-  total_jar_count=" $( echo " $jar_files " |  wc -l) " 
348-  #  delete white space
349-  #  because the output of mac system command `wc -l` contains white space!
352+  total_jar_count=" $( printf ' %s\n' " $jar_files " |  wc -l) " 
353+  #  remove white space, because the `wc -l` output on mac contains white space!
350354 total_jar_count=" ${total_jar_count// [[:space:]]/ } " 
351355
352356 echo  " $total_jar_count " 
353-  echo  " $jar_files " 
357+  printf ' %s\n ' " $jar_files " 
354358}
355359
356360__outputResultOfJarFile () {
357361 local  jar_file=" 1ドル " 
362+  #  shellcheck disable=SC2206
363+  local  grep_opt_args=($regex_mode  ${ignore_case_option:- }  ${grep_color_option:- }  -- " $pattern " 
358364
359365 if  $only_print_file_name ;  then 
360366 local  matched=false
@@ -366,7 +372,7 @@ __outputResultOfJarFile() {
366372 #  - https://stackoverflow.com/questions/19120263/why-exit-code-141-with-grep-q
367373 #  - https://unix.stackexchange.com/questions/305547/broken-pipe-when-grepping-output-but-only-with-i-flag
368374 #  - http://www.pixelbeat.org/programming/sigpipe_handling.html
369-  if  grep $regex_mode ${ignore_case_option :- }  -c --  " $pattern " & > /dev/null;  then 
375+  if  grep -c  " ${grep_opt_args[@]} " & > /dev/null;  then 
370376 matched=true
371377 fi 
372378
@@ -375,18 +381,23 @@ __outputResultOfJarFile() {
375381 fi 
376382
377383 clearResponsiveMessage
378-  [ -t  1 ] &&  echo  " ${ec} [1;35m${jar_file}${eend} " ||  echo  " ${jar_file} " 
384+  if  [ -t  1 ];  then 
385+  printf  " ${jar_color} %s${normal} \n" " ${jar_file} " 
386+  else 
387+  printf  ' %s\n' " ${jar_file} " 
388+  fi 
379389 else 
380390 {
381391 #  Prevent grep from exiting in case of no match
382392 #  https://unix.stackexchange.com/questions/330660
383-  #  shellcheck disable=SC2086
384-  grep $regex_mode  ${ignore_case_option:- }  ${grep_color_option:- }  -- " $pattern " ||  true 
393+  grep " ${grep_opt_args[@]} " ||  true 
385394 } |  while  read  -r file;  do 
386395 clearResponsiveMessage
387-  [ -t  1 ] && 
388-  echo  " ${ec} [1;35m${jar_file}${eend}${ec} [1;32m${separator}${eend}${file} " || 
389-  echo  " ${jar_file}${separator}${file} " 
396+  if  [ -t  1 ];  then 
397+  printf  " ${jar_color} %s${sep_color} %s${normal} %s\n" " $jar_file " " $separator " " $file " 
398+  else 
399+  printf  ' %s\n' " ${jar_file}${separator}${file} " 
400+  fi 
390401 done 
391402 fi 
392403}
0 commit comments