[tz] [PATCH 5/5] tzselect.ksh: add script mode option

J William Piggott elseifthen at gmx.com
Wed Jan 20 16:50:10 UTC 2016

The last message from tzselect states:
"... use the tzselect command in shell scripts"

To do so there needs to be a way to silence the
dialog tail. This commit adds an -s option to
facilitate that.

Signed-off-by: J William Piggott <elseifthen at gmx.com>
 tzselect.ksh | 25 +++++++++++++++++--------
 1 file changed, 17 insertions(+), 8 deletions(-)

diff --git a/tzselect.ksh b/tzselect.ksh
index 3e8d07b..41a430f 100644
--- a/tzselect.ksh
+++ b/tzselect.ksh
@@ -50,11 +50,12 @@ say() {
 	exit 1
-usage="Usage: tzselect [--version] [--help] [-c COORD] [-n LIMIT]
+usage="Usage: tzselect [--version] [--help] [-c COORD] [-n LIMIT] [-s]
 Select a time zone interactively.
@@ -70,7 +71,11 @@ Options:
   -n LIMIT
     Display at most LIMIT locations when -c is used (default $location_limit).
-  --version
+  -s
+    Silence the dialog, after the confirmation prompt is answered, to
+    facilitate calling tzselect from other applications.
+ --version
     Output version information.
@@ -146,13 +151,15 @@ else
-while getopts c:n:t:-: opt
+while getopts sc:n:t:-: opt
     case $opt$OPTARG in
 	coord=$OPTARG ;;
 	location_limit=$OPTARG ;;
+    s )
+	script_mode=1 ;;
     t*) # Undocumented option, used for developer testing.
 	zonetabtype=$OPTARG ;;
@@ -544,17 +551,19 @@ Raw System Clock time:	$UTdate."
 do coord=
-case $SHELL in
-*csh) file=.login line="setenv TZ '$TZ'";;
-*) file=.profile line="TZ='$TZ'; export TZ"
+if test $script_mode -ne 1 ; then
+  case $SHELL in
+  *csh) file=.login line="setenv TZ '$TZ'";;
+  *) file=.profile line="TZ='$TZ'; export TZ"
+  esac
-say >&2 "
+  say >&2 "
 You can make this change permanent for yourself by appending the line
 to the file '$file' in your home directory; then log out and log in again.
 Here is that TZ value again, this time on standard output so that you
 can use the $0 command in shell scripts:"
 say "$TZ"

More information about the tz mailing list