Shellscripting -z option


Login or Register for Dates, Times and to Reply

 
Thread Tools Search this Thread
# 1  
Shellscripting -z option

Can someone explain the -z option in shellscripting.

I did this. When I was in both ksh and bash it echoed back hi.

Code:
#!/bin/ksh

if [ -z "$BASH_VERSION" ]
then
    echo hi

fi

When I echoed $BASH_VERSION in bash it gave a version. When I echoed $BASH_VERSION in ksh it was blank.

I thought -z was only true if the length of the string is 0? This is what my man page says.

Code:
-z string = True if the length of the string is 0.

# 2  
Code:
echo ${#BASH_VERSION}

gives the length of a variable, i.e., the number of characters, whether numeric or not numeric.

I do not see what is going on.

Try:
Code:
#!/bin/bash
echo "bash version = $BASH_VERSION, length = ${BASH_VERSION}"

plus, you show ksh as the shell being run.

Please post the output - this way we KNOW what shell is running.
# 3  
Is this what you wanted to see?

Code:
bash-4.2$ echo $BASH_VERSION
4.2.50(1)-release
bash-4.2$ ksh
$ echo $BASH_VERSION

$

--- Post updated at 05:42 PM ---

I think this is what you wanted.

Code:
bash-4.2$ echo ${#BASH_VERSION}
17
bash-4.2$ ksh
$ echo ${#BASH_VERSION}
0
$

# 4  
Your script as originally posted showed a shebang for ksh.
Here is what I get:
Code:
$ cat t.shl
#!/bin/bash

if [ -z "$BASH_VERSION" ]
then
    echo hi
else
    echo "characters found"
fi

Owner@Owner-PC ~
$ ./t.shl
characters found

Next, I have dash not ksh so:
Code:
$ cat t.shl
#!/bin/dash

if [ -z "$BASH_VERSION" ]
then
    echo hi
else
    echo "characters found"
fi

Owner@Owner-PC ~
$ ./t.shl
hi

Both work as expected. So I cannot duplicate your problem. Which means to me you did not use shebang invocation and/or you got mixed up results you could not interpret. There is no other answer ...that I can see.
# 5  
Perhaps you think that your script checks your current shell. That is not the case.
The script is run by a new shell and reports on that shell.
If you run the script with its scriptname then it reports on the shell given in the #! shebang.
If you run the script with bash scriptname it finds bash.
If you run the script with ksh scriptname it finds ksh.
To report on the current (calling) shell the only solution is to include/source it:
Code:
. scriptname

Login or Register for Dates, Times and to Reply

Previous Thread | Next Thread
Thread Tools Search this Thread
Search this Thread:
Advanced Search

8 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

small error in shellscripting -archival part

Hi All, I have run the below script but getting one small error. please help me to solve this. ERROR: tar: Error exit delayed from previous errors CODE: #! /bin/bash CEP=/home/user01/exercise/CEP ARCH=/home/user01/exercise/archive LOG=/home/user01/exercise/logs... (3 Replies)
Discussion started by: aish11
3 Replies

2. Shell Programming and Scripting

shellscripting to edit xml file

I have an xml file where every line which has the word CDATA in it follows this pattern (line number) <word1><!]></>I need only these lines editing so that the end result is that (line number) <word1><!]></word1>so it copies the first bit to the end. Anyone know how I can do this I am... (10 Replies)
Discussion started by: legolad
10 Replies

3. Shell Programming and Scripting

Timeout in shellscripting

#!/bin/sh for ip in $(cat /root/Desktop/ftp.txt) do HOST=$ip USER='bob' PASS='bob' ftp -n $HOST <<EOF user bob bob EOF echo "$ip" done the Above code i want to use check and verify login works on multiple ftp servers on my network. However the ftp servers are dynamic in setup... (5 Replies)
Discussion started by: Noledge
5 Replies

4. Shell Programming and Scripting

New to shellscripting error: ./emailnotifications.sh: line 43: [: FH: integer expression expected

Hi , I'm a beginner in unix shell scripting need help in rectifying an error Source file :test.txt with Header ------ ----- Trailer ex: FH201010250030170000000000000000 abc def jke abr ded etf FE2 I was validating whether the header begin... (2 Replies)
Discussion started by: dudd9
2 Replies

5. Shell Programming and Scripting

recently introduced to the newer option for find...does an older option exist?

To find all the files in your home directory that have been edited in some way since the last tar file, use this command: find . -newer backup.tar.gz Is anyone familiar with an older solution? looking to identify files older then 15mins across several directories. thanks, manny (2 Replies)
Discussion started by: mr_manny
2 Replies

6. Shell Programming and Scripting

New to shellscripting....need some help!

I have 3 shell scripts below.... I need to write a command line parser for these 3 utilities. basically the parser will accept ANY number of commands in this syntax -r = right -f = findtext -c = count so you do something like mu.s -r 3 4 5 -f hello goodbye.txt -c *.c -h 5 4 3 right... (5 Replies)
Discussion started by: TurboArkhan
5 Replies

7. Shell Programming and Scripting

Running SQLPLUS from Shellscripting ...

Hi guys, I am facing issues while triggering sqlplus with "/" option I can connect to database with USER ID and password. but, if i just specify "/" option since it is "externally identiifed user" it doesn't work Any suggestions? mail me @ Removed. Regards, Giri (2 Replies)
Discussion started by: chittari
2 Replies

8. Shell Programming and Scripting

shellscripting question

I have been “commissioned” to write a shellscript to automate Oracle cold refeshes.. right now we perform about 20 refresh each 300gb in size which takes up our time. my goal is to write a shellscript which can be executed by a user on serverA to refresh any of the 7 databases on ServerA. I am... (4 Replies)
Discussion started by: jigarlakhani
4 Replies

Featured Tech Videos