Sponsored Content
Top Forums Shell Programming and Scripting Why do these 2 methods result in different outcomes? Post 303021971 by BLinux on Tuesday 21st of August 2018 09:17:24 PM
Old 08-21-2018
Why do these 2 methods result in different outcomes?

I've been troubleshooting a ksh93 script I wrote today and have narrowed it down to the root cause. but I don't understand why?

so, i've written the following script to demonstrate the problem i found today:

Code:
#!/bin/ksh

method=$1

FILE_LIST=( $(find /someplace -type f -printf "%T@\t%p\n" 2>/dev/null | sort -r | awk '{print $2}') )

print "found ${#FILE_LIST[*]} files."

typeset -li counter=0
for file in ${FILE_LIST[*]}
do
    case $method in
	0)
	    [[ -f $file ]] \
	        && (( counter++ )) \
	        && continue
	    ;;
	1)
	    if [[ -f "$file" ]] ; then
		(( counter++ ))
		continue
	    fi
	    ;;
	*)
	    print "don't know that method"
	    exit 1
	    ;;
    esac

    print "should never get here: $file"
done

print "counter=$counter"

the code for when method=0 or 1 provides different results. I *thought* it would be the same, and I don't understand why it isn't:

Code:
$ ./t60.ksh 1
found 106 files.
counter=106
$ ./t60.ksh 0
found 106 files.
should never get here: /someplace/.t60.ksh.swp
counter=106

The ".t60.ksh.swp" file is simply the 1st element of the FILE_LIST array. Why does method=0 result in execution of the "should never get here" line once? (and why only once?) I was expecting it to have the same result as method=1.
 

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

file transfer Methods

I would like to write shell script to transfer some ASCII files from HPUX server to Linux server or vice-versa. What options I have for file transfer Methods. 1) FTP 2) rcp 3) HTTP 4)Whatelse? (2 Replies)
Discussion started by: Teh Tiack Ein
2 Replies

2. What is on Your Mind?

Predict Future Outcomes in Our Event Prediction Market

Folks love to predict the future, so we have enabled predicting the future for members. So, please enjoy placing your Forum Bits predicting future outcomes in our new Event Prediction Market. Current events you can predict include science, technology, M&A and other global events: Oracle... (0 Replies)
Discussion started by: Neo
0 Replies

3. Shell Programming and Scripting

Methods to SSH (Perl)...

Can anyone break down the different methods of using SSH in perl? I'm currently using Net::SSH::Expect, which allows me to login to a machine and execute multiple commands without having to ssh again. This feature of holding the session works well for me, but it's slow. If I set timeouts to 4... (3 Replies)
Discussion started by: mrwatkin
3 Replies

4. UNIX for Advanced & Expert Users

yum provides methods

What is the difference between these yum provides and whatprovides methods? I know provides and whatprovides give the same results, but different methods of */ and \* give different results. Also whether you put */ and \* in front of the string or behind the string give different results. I have... (0 Replies)
Discussion started by: cokedude
0 Replies

5. Solaris

Unix learning methods

I have recently completed Solaris 10 System Administration book by Bill Calkins. Now I want to learn more about UNIX. I have tried to research online but there is too much information and I am sort of overwhelmed and don't know where to start. Can anybody give some idea on how to pursue my learning... (3 Replies)
Discussion started by: saudsos
3 Replies

6. Shell Programming and Scripting

Perl Methods Calling

Hello I am on my way to improve my wonderful Perl skills, I got an issue which I want to share with you all. I have a Perl module which looks like package Cocoa; require Exporter; @ISA = qw(Exporter); my $a=''; my $b=''; my $c=''; sub new { my $this = shift; # Create... (8 Replies)
Discussion started by: adisky123
8 Replies

7. Shell Programming and Scripting

How to compare the current result with previous line result.?

Hi Gurus, I have requirement to compare current result with previous reuslt. The sample case is below. 1 job1 1 1 job2 2 1 job3 3 2 job_a1 1 2 job_a2 2 2 job_a3 3 3 job_b1 1 3 job_b2 2 for above sample file, GID is group ID, for input line, the job run... (1 Reply)
Discussion started by: ken6503
1 Replies

8. Linux

Help with PAM Logging methods.

Hi Folks, Would like to understand if there exists any method to write the logs for LDAP authenticated users and Local Users separately in two different files. If not, then do I distinguish whether the user is LDAP or local without looking at passwd. Bye the way, I am trying this weird... (0 Replies)
Discussion started by: awk-admirer
0 Replies

9. UNIX for Beginners Questions & Answers

One Line Command how to use pipe statements to execute and comment on multiple possible outcomes

Hello Forum, I'm looking to expand the following command: INACTIVE_KERNELS=$(python -mplatform | grep -qi red && rpm -qa | grep '^kernel-' |grep -vE `uname -r` | paste -sd \; || echo "Not Red Hat Server") Currently this command will check if my server is RedHat server using the grep -qi... (6 Replies)
Discussion started by: greavette
6 Replies
exit(1) 							   User Commands							   exit(1)

NAME
exit, return, goto - shell built-in functions to enable the execution of the shell to advance beyond its sequence of steps SYNOPSIS
sh exit [n] return [n] csh exit [( expr )] goto label ksh *exit [n] *return [n] ksh93 +exit [n] +return [n] DESCRIPTION
sh exit causes the calling shell or shell script to exit with the exit status specified by n. If n is omitted the exit status is that of the last command executed (an EOF also causes the shell to exit.) return causes a function to exit with the return value specified by n. If n is omitted, the return status is that of the last command exe- cuted. csh exit causes the calling shell or shell script to exit, either with the value of the status variable or with the value specified by the expression expr. The goto built-in uses a specified label as a search string amongst commands. The shell rewinds its input as much as possible and searches for a line of the form label: possibly preceded by space or tab characters. Execution continues after the indicated line. It is an error to jump to a label that occurs between a while or for built-in command and its corresponding end. ksh exit causes the calling shell or shell script to exit with the exit status specified by n. The value is the least significant 8 bits of the specified status. If n is omitted then the exit status is that of the last command executed. When exit occurs when executing a trap, the last command refers to the command that executed before the trap was invoked. An end-of-file also causes the shell to exit except for a shell which has the ignoreeof option (See set below) turned on. return causes a shell function or '.' script to return to the invoking script with the return status specified by n. The value is the least significant 8 bits of the specified status. If n is omitted then the return status is that of the last command executed. If return is invoked while not in a function or a '.' script, then it is the same as an exit. On this man page, ksh(1) commands that are preceded by one or two * (asterisks) are treated specially in the following ways: 1. Variable assignment lists preceding the command remain in effect when the command completes. 2. I/O redirections are processed after variable assignments. 3. Errors cause a script that contains them to abort. 4. Words, following a command preceded by ** that are in the format of a variable assignment, are expanded with the same rules as a variable assignment. This means that tilde substitution is performed after the = sign and word splitting and file name genera- tion are not performed. ksh93 exit is shell special built-in that causes the shell that invokes it to exit. Before exiting the shell, if the EXIT trap is set, it is invoked. If n is specified, it is used to set the exit status. return is a shell special built-in that causes the function or dot script that invokes it to exit. If return is invoked outside of a func- tion or dot script it is equivalent to exit. If return is invoked inside a function defined with the function reserved word syntax, then any EXIT trap set within the function is invoked in the context of the caller before the function returns. If n is specified, it is used to set the exit status. On this manual page, ksh93 commands that are preceded by one or two + symbols are special built-in commands and are treated specially in the following ways: 1. Variable assignment lists preceding the command remain in effect when the command completes. 2. I/O redirections are processed after variable assignments. 3. Errors cause a script that contains them to abort. 4. They are not valid function names. 5. Words following a command preceded by ++ that are in the format of a variable assignment are expanded with the same rules as a variable assignment. This means that tilde substitution is performed after the = sign and field splitting and file name genera- tion are not performed. EXIT STATUS
ksh93 If n is specified for exit, the exit status is the least significant eight bits of the value of n. Otherwise, the exit status is the exit status of preceding command. When invoked inside a trap, the preceding command means the command that invoked the trap. If n is specified for return, the exit status is the least significant eight bits of the value of n. Otherwise, the exit status is the exit status of preceding command. ATTRIBUTES
See attributes(5) for descriptions of the following attributes: +-----------------------------+-----------------------------+ | ATTRIBUTE TYPE | ATTRIBUTE VALUE | +-----------------------------+-----------------------------+ |Availability |SUNWcsu | +-----------------------------+-----------------------------+ SEE ALSO
break(1), csh(1), ksh(1), ksh93(1), sh(1), attributes(5) SunOS 5.11 2 Nov 2007 exit(1)
All times are GMT -4. The time now is 06:39 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy