Sponsored Content
Top Forums Shell Programming and Scripting Why the results of these two code fragments are not the same? Post 303030207 by Don Cragun on Thursday 7th of February 2019 05:39:18 AM
Old 02-07-2019
I generally avoid eval, but have you considered making your shell script more like your C++ code?
Code:
#!/bin/sh
#set -xv
i=1
while [ $i -le $# ]
do	j=$((i + 1))
	while [ $j -le $# ]
	do	if eval [ \"\${$i}\" = \"\${$j}\" ]
		then	printf '\n%s (%d,%d)\n\nExiting...\n\n' \
			    'Error: Two or more arguments are the same:' \
			    $i $j >&2
			exit 1
		fi
		j=$((j + 1))
	done
	i=$((i + 1))
done

The while loops in the above script could be simplified to for loops that are accepted by many shells (including recent versions of bash and ksh) but they are extensions to the standards and, therefore, not available in several shells. The above code just uses standard utility interfaces and shell language constructs. For shells that accept these extensions, the below code looks even more like your C++ code.
Code:
#!/bin/sh
set -xv
for ((i = 1; i <= $#; i++))
do	for ((j = i + 1; j <= $#; j++))
	do	if eval [ \"\${$i}\" = \"\${$j}\" ]
		then	printf '\n%s (%d,%d)\n\nExiting...\n\n' \
			    "Error: Two or more arguments are the same:" \
			    $i $j >&2
			exit 1
		fi
	done
done

Note that both of these script write their error messages to the standard error output instead of to standard output and both of these script print the argument numbers of the first found pair of identical argument in their diagnostics.
 

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
AFQUERY(3)																AFQUERY(3)

NAME
afQuery, afQueryLong, afQueryDouble, afQueryPointer - query the capabilities of the Audio File Library SYNOPSIS
#include <audiofile.h> AUpvlist afQuery (int querytype, int arg1, int arg2, int arg3, int arg4); long afQueryLong (int querytype, int arg1, int arg2, int arg3, int arg4); double afQueryDouble (int querytype, int arg1, int arg2, int arg3, int arg4); void *afQueryPointer (int querytype, int arg1, int arg2, int arg3, int arg4); PARAMETERS
querytype can be one of the following: o AF_QUERYTYPE_FILEFMT o AF_QUERYTYPE_INST o AF_QUERYTYPE_INSTPARAM o AF_QUERYTYPE_COMPRESSION o AF_QUERYTYPE_COMPRESSIONPARAM o AF_QUERYTYPE_MISC o AF_QUERYTYPE_MARK o AF_QUERYTYPE_LOOP arg1, arg2, arg3, and arg4 are integer selectors whose meaning depends upon querytype. RETURN VALUE
Upon success, afQuery will return a non-null AUpvlist value. Upon failure, afQuery will return null while afQueryLong and afQueryDouble will return -1 and afQueryPointer will return null. Pointers representing character strings are owned by the Audio File Library and must not be freed; all other pointer values must be freed by the caller. DESCRIPTION
For AF_QUERYTYPE_FILEFMT, the following selectors are valid values for arg1: AF_QUERY_LABEL Request a short label string for the format (e.g., "aiff"). AF_QUERY_NAME Request a short name for the format (e.g., "MS RIFF WAVE"). AF_QUERY_DESC Request a descriptive name for the format (e.g., "Audio Interchange File Format"). AF_QUERY_IMPLEMENTED Request a boolean value indicating whether the format is implemented for reading and writing in the Audio File Library. AF_QUERY_ID_COUNT Request the total number of formats implemented. AF_QUERY_IDS Request an integer array of the id token values of all implemented file formats. AF_QUERY_COMPRESSION_TYPES Used with the selector AF_QUERY_VALUE_COUNT in arg2, this will return a long integer containing the number of compression schemes available for use within the format specified in arg3. Used with selector AF_QUERY_VALUES, it returns a pointer to an integer array containing the compression id values of the compression schemes supported by the format specified in arg3. AF_QUERY_SAMPLE_FORMATS Used with the selector AF_QUERY_DEFAULT in arg2, this will return the default sample format for the file format specified in arg3. AF_QUERY_SAMPLE_SIZES Used with selector AF_QUERY_DEFAULT in arg2, this will return the default sample width for the file format specified in arg3. For AF_QUERYTYPE_INST, the following selectors are valid for arg1: AF_QUERY_SUPPORTED Request a boolean value indicating whether the file format in arg2 supports instruments. AF_QUERY_MAX_NUMBER Request an integer value indicating the maximum number of instruments supported by the file format in arg2. For AF_QUERYTYPE_INSTPARAM, the following selectors are valid for arg1: AF_QUERY_SUPPORTED Request a boolean value indicating whether the file format in arg2 supports instrument parameters. AF_QUERY_ID_COUNT Request an integer value indicating the number of instrument parameters supported by the file format in arg2. AF_QUERY_IDS Request an integer array containing the instrument parameter values for the file format in arg2. AF_QUERY_TYPE For the file format in arg2, request the type of the instrument parameter in arg3. AF_QUERY_NAME For the file format in arg2, request the name of the instrument parameter in arg3. AF_QUERY_DEFAULT For the file format in arg2, request the default value of the instrument parameter in arg3. ERRORS
afQuery can produce the following errors: AF_BAD_QUERYTYPE The query type is unsupported. AF_BAD_QUERY The arguments to the query are bad. AUTHOR
Michael Pruett <michael@68k.org> Audio File Library 0.3.6 03/06/2013 AFQUERY(3)
All times are GMT -4. The time now is 03:25 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy