Sponsored Content
Top Forums Shell Programming and Scripting Why the results of these two code fragments are not the same? Post 303030173 by johnprogrammer on Thursday 7th of February 2019 01:13:33 AM
Old 02-07-2019
Quote:
Originally Posted by Don Cragun
But, the code you've written in your shell scripts acts more like your C++ code with the inner loop changed from:
Code:
    for(vector<string>::size_type j= i+ 1; j< myvector.size(); ++j)

to:
Code:
    for(vector<string>::size_type j= 0; j< myvector.size(); ++j)


Yes you are right.



Quote:
There doesn't appear to be any attempt to keep from checking one element against itself in your command-line argument vector in either of your shell scripts.

I repeat: "What is the logic in both of your scripts behind the variable named counter? Why does it matter what the value of $counter is when trying to determine whether or not two command-line arguments are the same?"

When the shell script starts, both arg1 and arg2 have the same value.

So I use the counter with value 0, to determine this case, and advance the second for-loop to the next argument, and from there, I check if arg2=arg1.


If the second loop ends, the first loop progresses to the next argument.

The second loop restarts again with the first argument, and proceeds until it meets the first loop, where arg2=arg1 and counter -eq 0.

arg2 then proceeds to the next argument, until it ends, if no duplicate arguments found.

Then the first loop progresses to the next argument. etc.

The code that works, is the first I posted, and is this:

Code:
#!/bin/sh

for arg1 in "$@"
do
    counter=0


   for arg2 in "$@"
   do

     if [ "$arg2" = "$arg1" ] && [ $counter -eq 0 ]
     then
       counter=$((counter+1))

       continue 
    fi


   if [ "$arg2" = "$arg1" ]
   then
    
     echo
     echo "Error: Two or more arguments are the same."
     echo
     echo "Exiting..."
     echo

     exit 1
    fi

  done

done

exit 0

 

8 More Discussions You Might Find Interesting

1. UNIX for Advanced & Expert Users

fragments in Solaris 8

When discussing inodes and data blocks, I know Solaris creates these data blocks with a total size of 8192b, divided into eight 1024b "fragments." It stores data in "contiguous" fragments and solaris doesn't allow a file to use portions of two different fragments. If the file size permits, then the... (4 Replies)
Discussion started by: manderson19
4 Replies

2. Post Here to Contact Site Administrators and Moderators

results survey

Hi guys! I was wondering what the outcome was of your survey of a few months ago? One of the questions was if people were willing to pay for additional services like an own account, like username@unix.com with mail box, etc. Sorry if I missed the results if you had already posted them. Ivo (1 Reply)
Discussion started by: Ivo
1 Replies

3. Solaris

ipfilter blocking ip fragments

For some reason ipfilter is blocking inbound fragmented ip packets (the packets are larger than the interface's MTU) that are encapsulating UDP segments. The connection works, so I know ipfilter is letting some traffic through, it is just a lot slower than it should be. Rules that allow the... (3 Replies)
Discussion started by: ilikecows
3 Replies

4. IP Networking

Solaris 11 Express NAT/Router IP Fragments

Upon replacing my linux router/server with a Solaris one I've noticed very poor network performance. The server itself has no issues connecting to the net, but clients using the server as a router are getting a lot of IP fragments as indicated from some packet sniffing I conducted. Here was my... (3 Replies)
Discussion started by: vectox
3 Replies

5. Shell Programming and Scripting

Can ctag and cscope support recording search results and displaying the history results ?

Hello , When using vim, can ctag and cscope support recording search results and displaying the history results ? Once I jump to one tag, I can use :tnext to jump to next tag, but how can I display the preview search result? (0 Replies)
Discussion started by: 915086731
0 Replies

6. Shell Programming and Scripting

Why use different FS, the results is different?

# echo '1 2 3 ' | awk -F' ' '{print NF}' 3 # echo '1:2:3:' | awk -F':' '{print NF}' 4 (1 Reply)
Discussion started by: lazycat79
1 Replies

7. Shell Programming and Scripting

Extract fragments from file

I have a .xml file that looks something like this : <measInfo> ......... string1 ......... </measInfo> <measInfo> ...... string2 ........ </measInfo> I want to extract only the 'chunk of file' from '<measInfo>' to '</measInfo>' containing string1 (or a certain string that I... (13 Replies)
Discussion started by: black_fender
13 Replies

8. Shell Programming and Scripting

I want to add a variable for the results from the formula of one variable and results of another var

Good morning all, This is the file name in question OD_Orders_2019-02-19.csv I am trying to create a bash script to read into files with yesterdays date on the file name while retaining the rest of the files name. I would like for $y to equal, the name of the file with a formula output with... (2 Replies)
Discussion started by: Ibrahim A
2 Replies
ddi_intr_add_handler(9F)                                                                                                  ddi_intr_add_handler(9F)

NAME
ddi_intr_add_handler, ddi_intr_remove_handler - add or remove interrupt handler SYNOPSIS
#include <sys/types.h> #include <sys/conf.h> #include <sys/ddi.h> #include <sys/sunddi.h> int ddi_intr_add_handler(ddi_intr_handle_t *h, ddi_intr_handler_t inthandler, void *arg1, void *arg2); int ddi_intr_remove_handler(ddi_intr_handle_t h); INTERFACE LEVEL
Solaris DDI specific (Solaris DDI). ddi_intr_add_handler() h Pointer to the DDI interrupt handle inthandler Pointer to interrupt handler arg1 First argument for the interrupt handler arg2 Second, optional, argument for the interrupt handler ddi_intr_remove_handler() h DDI interrupt handle The ddi_intr_add_handler() function adds an interrupt handler given by the inthandler argument to the system with the handler arguments arg1 and arg2 for the previously allocated interrupt handle specified by the h pointer. The arguments arg1 and arg2 are passed as the first and second arguments, respectively, to the interrupt handler inthandler. See <sys/ddi_intr.h> for the definition of the interrupt handler. The routine inthandler with the arguments arg1 and arg2 is called upon receipt of the appropriate interrupt. The interrupt handler should return DDI_INTR_CLAIMED if the interrupt is claimed and DDI_INTR_UNCLAIMED otherwise. The ddi_intr_add_handler() function must be called after ddi_intr_alloc(), but before ddi_intr_enable() is called. The interrupt must be enabled through ddi_intr_enable() or ddi_intr_block_enable() before it can be used. The ddi_intr_remove_handler() function removes the handler association, added previously with ddi_intr_add_handler(), for the interrupt identified by the interrupt handle h argument. Unloadable drivers should call this routine during their detach(9E) routine to remove the interrupt handler from the system. The ddi_intr_remove_handler() function is used to disassociate the handler after the interrupt is disabled to remove dup-ed interrupt han- dles. See ddi_intr_dup_handler(9F) for dup-ed interrupt handles. If a handler is duplicated with the ddi_intr_dup_handler() function, all added and duplicated instances of the handler must be removed with ddi_intr_remove_handler() in order for the handler to be completely removed. The ddi_intr_add_handler() and ddi_intr_remove_handler() functions return: DDI_SUCCESS On success. DDI_EINVAL On encountering invalid input parameters. DDI_FAILURE On any implementation specific failure. CONTEXT
The ddi_intr_add_handler() and ddi_intr_remove_handler() functions can be called from kernel non-interrupt context. See attributes(5) for descriptions of the following attributes: +-----------------------------+-----------------------------+ | ATTRIBUTE TYPE | ATTRIBUTE VALUE | +-----------------------------+-----------------------------+ |Interface Stability |Evolving | +-----------------------------+-----------------------------+ attributes(5), attach(9E), detach(9E), ddi_intr_alloc(9F), ddi_intr_block_enable(9F), ddi_intr_disable(9F), ddi_intr_dup_handler(9F), ddi_intr_enable(9F), ddi_intr_free(9F), ddi_intr_get_supported_types(9F), mutex(9F), mutex_init(9F), rw_init(9F), rwlock(9F) Consumers of these interfaces should verify that the return value is not equal to DDI_SUCCESS. Incomplete checking for failure codes could result in inconsistent behavior among platforms. If a device driver that uses MSI and MSI-X interrupts resets the device, the device might reset its configuration space modifications. Such a reset could cause a device driver to lose any MSI and MSI-X interrupt usage settings that have been applied. The second argument, arg2, is optional. Device drivers are free to use the two arguments however they see fit. There is no officially rec- ommended model or restrictions. For example, an interrupt handler may wish to use the first argument as the pointer to its softstate and the second argument as the value of the MSI vector. 22 Apr 2005 ddi_intr_add_handler(9F)
All times are GMT -4. The time now is 07:41 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy