Sponsored Content
Top Forums Shell Programming and Scripting ksh - Get last character from string - Bad Substitution error Post 302899941 by ysrini on Friday 2nd of May 2014 01:53:42 PM
Old 05-02-2014
ksh - Get last character from string - Bad Substitution error

I want to get the last character from my machine name using the following code, the default shell is bash, the script runs in ksh.
I get 'bad' substitution error on running the script, but works fine if run using dot and space.

Why?

Code:
[ysrini@linuxapp01a bin]$ echo $0
bash

[ysrini@linuxapp01a bin]$ cat -n myenv.sh 
     1  #!/usr/bin/ksh
     2
     3  export SERVER_NAME=`hostname`
     4  echo "SERVER_NAME : ${SERVER_NAME}"
     5
     6  export SERVER_NODE=`echo ${SERVER_NAME:${#SERVER_NAME} - 1}`
     7  echo "SERVER_NODE : ${SERVER_NODE}"
     8
     9  export SERVER_ROOT_NAME=`echo "${SERVER_NAME%?}"`
    10  echo "SERVER_ROOT_NAME : ${SERVER_ROOT_NAME}"


[ysrini@linuxapp01a bin]$ myenv.sh 
SERVER_NAME : linuxapp01a
./myenv.sh[6]: : bad substitution
SERVER_NODE : 
SERVER_ROOT_NAME : linuxapp01

[ysrini@linuxapp01a bin]$ . myenv.sh 
SERVER_NAME : linuxapp01a
SERVER_NODE : a
SERVER_ROOT_NAME : linuxapp01

 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

bad substitution Error while renaming Extension

Hi All, We are in the process of Migrating from AIX 4 to Solaris 10 and getting a Few Errors. I have been programming in shell but could never establish muself as an expert, hence please need you help. I am Getting Bad Substitution error in my script, I have isolated the issue and its... (6 Replies)
Discussion started by: paragkhanore
6 Replies

2. Shell Programming and Scripting

bad substitution error in ksh

hi, i created a shell script having the following content: #! /usr/bin/ksh FROM="myemail@domain.com" MAILTO="someemail@domain" SUBJECT="TEST" BODY="/export/home/adshocker/body.txt" ATTACH="/export/home/adshocker/attach.prog" echo $ATTACH ATTACH_NAME="${ATTACH##*/}" echo $ATTACH_NAME... (5 Replies)
Discussion started by: adshocker
5 Replies

3. Shell Programming and Scripting

bad substitution error in ksh

Hello, In bash I can use the following: TMP=12345 MID=${TMP:1:1} the expected result is: 2 but when using KSH I'm getting a ''bad substitution" error. What is the correct syntaxin ksh? Thanks (2 Replies)
Discussion started by: LiorAmitai
2 Replies

4. UNIX for Dummies Questions & Answers

bad substitution

#!/bin/bash a1=( win 12,01,02,03,04 ) a2=( pre 04,05,06 ) a3=( msn 06,07,08,09 ) Given the above arrays, I want the script to return/echo the following in a loop; win 12,01,02,03,04 pre 04,05,06,07 msn 06,07,08,09 But I can't get it to do as such. I've tried; (2 Replies)
Discussion started by: Muhammad Rahiz
2 Replies

5. Shell Programming and Scripting

KSH: substitution character, AWK or SED?

Hi Gurus, I am working with a korn shell script. I should replace in a very great file the character ";" with a space. Example: 2750;~ 2734;~ 2778;~ 2751;~ 2751;~ 2752;~ what the fastest method is? Sed? Awk? Speed is dead main point, Seen the dimensions of the files Thanks (6 Replies)
Discussion started by: GERMANICO
6 Replies

6. Shell Programming and Scripting

bad substitution error!

Hi All, I'm building a new shell script but i'm facing a problem with one line which is giving "bad substitution" error. Please assist script lines: #!/bin/sh printf "%s: " "Occurrence DATE (YYYYMMDD)"; read DATE shortdate=${DATE#??} o/p: ./test1: bad substitution This command is... (2 Replies)
Discussion started by: Dendany83
2 Replies

7. Shell Programming and Scripting

Why I get bad bad substitution when using eval?

Why I get bad replace when using eval? $ map0=( "0" "0000" "0") $ i=0 $ eval echo \${map$i} 0000 $ a=`eval echo \${map$i}` !!!error happens!!! bash: ${map$i}: bad substitution How to resolve it ? Thanks! (5 Replies)
Discussion started by: 915086731
5 Replies

8. Shell Programming and Scripting

Bad substitution error in shell script

I have script data.sh which has following error. Script Name : data.sh #!/bin/sh infile=$1 len=${#infile} echo $len texfile=${infile:0:$len-4} echo $texfile run command ./data.sh acb.xml I get following error message: (5 Replies)
Discussion started by: man4ish
5 Replies

9. Shell Programming and Scripting

Bad substitution error while working with substring

Hi I'm using ksh. And i'm trying to get the substring like below. but giving the following error #!/bin/ksh foo=teststring bar=${foo:0:5} echo $bar And the error is ./sbstr_test.sh: bar=${foo:0:5}: bad substitution what is wrong in this script. Please correct me ... (3 Replies)
Discussion started by: smile689
3 Replies

10. Shell Programming and Scripting

Bad substitution

Cant undestand :) why i have an error on line 2.it is working on my other boxes #!/bin/bash ret=$(echo Q | timeout 5 openssl s_client connect "${1`hostname`}:${2-443}" -ssl3 2> /dev/null) if echo "${ret}" | grep -q 'Protocol.*SSLv3'; then if echo "${ret}" | grep -q 'Cipher.*0000'; then ... (7 Replies)
Discussion started by: kenshinhimura
7 Replies
man2html(1)                                                   General Commands Manual                                                  man2html(1)

NAME
man2html - format a manual page in html SYNOPSIS
man2html [options] [file] DESCRIPTION
man2html converts a manual page as found in file (or stdin, in case no file argument, or the argument "-", is given) from man-style nroff into html, and prints the result on stdout. It does support tbl but does not know about eqn. The exit status is 0. If something goes wrong, an error page is printed on stdout. This can be used as a stand-alone utility, but is mainly intended as an auxiliary, to enable users to browse their man pages using a html browser like lynx(1), xmosaic(1) or netscape(1). The main part of man2html is the troff-to-html engine written by Richard Verhoeven (rcb5@win.tue.nl). It adds hyperlinks for the following constructs: foo(3x) "http://localhost/cgi-bin/man/man2html?3x+foo" method://string "method://string" www.host.name "http://www.host.name" ftp.host.name "ftp://ftp.host.name" name@host "mailto:name@host" <string.h> "file:/usr/include/string.h" (The first of these can be tuned by options - see below.) No lookup is done - the links generated need not exist. Also an index with internal hyperlinks to the various sections is generated, so that it is easier to find one's way in large man pages like bash(1). OPTIONS
When reading from stdin, it is not always clear how to do .so expansion. The -D option allows a script to define the working directory. -D pathname Strip the last two parts from the pathname, and do a chdir(dir) before starting the conversion. The -E option allows the easy generation of error messages from a cgi script. -E string Output an error page containing the given error message. The general form of a hyperlink generated for a man page reference is <method:cgipath><man2htmlpath><separator><manpage> with a default as shown above. The parts of this hyperlink are set using the various options. -h Set method:cgipath to http://localhost. -H host[.domain][:port] Set method:cgipath to http://host.domain:port. -l Set method:cgipath to lynxcgi:/usr/lib. -L dir Set method:cgipath to lynxcgi:dir. -M man2htmlpath Set the man2htmlpath to use. The default is /cgi-bin/man/man2html. -p Set separator to '/'. -q Set separator to '?'. This is the default. -r Use relative html paths, instead of cgi-bin paths. On a machine without running httpd, one can use lynx to browse the man pages, using the lynxcgi method. When some http daemon is running, lynx, or any other browser, can be used to browse the man pages, using the http method. The option -l (for `lynxcgi') selects the former behaviour. With it, the default cgipath is /usr/lib. In general, a cgi script can be called by <path_to_script>/<more_path>?<query> and the environment variables PATH_INFO and QUERY_STRING will be set to <more_path> and <query>, respectively. Since lynxcgi does not han- dle the PATH_INFO part, we generate hyperlinks with `?' as a separator by default. The option -p (for `path') selects '/' as a separator, while the option -q (for `query') selects '?' as a separator. The option -H host will specify the host to use (instead of localhost). A cgi script could use man2html -H $SERVER_NAME if the variable SERVER_NAME is set. This would allow your machine to act as a server and export man pages. BUGS
There are many heuristics. The output will not always be perfect. The lynxcgi method will not work if lynx was compiled without selecting support for it. There may be problems with security. AUTHOR
Richard Verhoeven was the original author of man2html. Michael Hamilton and Andries Brouwer subsequently improved on it. Federico Lucifredi <flucifredi@acm.org> is the current maintainer. SEE ALSO
lynx(1), man(1), hman(1) 1 January 1998 man2html(1)
All times are GMT -4. The time now is 01:54 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy