Sponsored Content
Full Discussion: $# question
Top Forums Shell Programming and Scripting $# question Post 34215 by criglerj on Sunday 9th of February 2003 05:13:06 PM
Old 02-09-2003
Re: $# question

You weren't very specific, so I'll answer from the Bourne/Korn/zsh perspective.
Quote:
Originally posted by google
$# holds the number of arguments passed into a shell. Is this value the index of an array?
No, as you already wrote, it's the number of arguments passed into the shell. (The array thing is a C-shell -ism.) You access the arguments by using the variables $1, $2, etc. If there are more than nine arguments, you can use ${10}, ${11}, etc. There are lots of ways to scan through the arguments looking for something.
Quote:
google continued
and if so, is there a way to determine the max index of the array so that I can know right off how many values were passed in? or do I have to sit in some sort of loop testing to see if $# is set, incrementing $# along the way? the goal here is to use the max index to define the iteration argument of a loop.
I think all you need is something like this:
Code:
i=1
while [ $i -lt "$#" ] ; do
    eval arg=\${$i}
    # Do something with $arg here
    i=`expr $i + 1`
done

With Korn and Z shells, you get built in simple arithmetic and don't need to invoke expr.

Unless you need to hold on to the previous values in place (rare in practice), the more usual idiom is something like this:
Code:
while [ "$#" -gt 0 ]; do
    # Do something with $1 here
    shift   # Move $1 out, shifting $2->$1, $3->$2, etc
done

Re: the quotes around $#: The Vim syntax hilighting barfs on this expression when it is unquoted.
 

7 More Discussions You Might Find Interesting

1. Programming

Yet Another Question

Now that I have getch() to work, I have yet another problem. BTW, thank you for answering these questions, I do ask a lot, only because I am eager to know, what is a board used for anyways :) Ok, he's the problem... #include iostream.h #include conio.h int main() { char movement; ... (2 Replies)
Discussion started by: mbolthouse
2 Replies

2. Solaris

vi question

Im trying to edit a 113 meg file in VI and i get the error TMP FILE TOO LARGE. Does someone know how to get around this? Thanks! (1 Reply)
Discussion started by: BG_JrAdmin
1 Replies

3. UNIX for Dummies Questions & Answers

mv question

Hello if I like to move file from defined directories system to new directory that not contained any directories system structure . But I like to create the same file system structure as source directory for example : I have 2 directories: foo1 and foo2 foo1 have directories and foo2 have... (2 Replies)
Discussion started by: umen
2 Replies

4. UNIX for Dummies Questions & Answers

Question

hallo, ik heb hier een vraagje. hoeveel gebruikers kunnen er op 1 unix systeem. hopelijk antwoorden golle nu want ik moet da vinde voor school en die leerkracht zaagt. :p groetjes eu wacht wa was mijne nick ah ja vraagje groetjes vraagje ik kan geen engels dus antwoord liever in het... (1 Reply)
Discussion started by: vraagje
1 Replies

5. Shell Programming and Scripting

question about wc

Hey my friend was asking me if i knew a way to cout how many different words in a file. I told him no not off hand, but i was thinking about it, and i started to wonder also. I imagine this is probably pretty simple im just missing something, I keep confusing my self with how you would compair and... (16 Replies)
Discussion started by: yodadbl07
16 Replies

6. Hardware

question

How to add 3 moniters to a pc set up? (2 Replies)
Discussion started by: clicstic
2 Replies

7. AIX

df question

Hi, Can anyone please explain a little about df command. I have following question: Following example is showing % used as 4 where as total free blocks are 15.46 out of 16.00 MB blocks. df -m /test Filesystem MBblocks Free %Used Iused %Iused ... (5 Replies)
Discussion started by: itsabhi9
5 Replies
xpc_array_create(3)					   BSD Library Functions Manual 				       xpc_array_create(3)

NAME
xpc_array_create -- creation and management of XPC arrays SYNOPSIS
#include <xpc/xpc.h> xpc_object_t xpc_array_create(const xpc_object_t *objects, size_t count); void xpc_array_set_value(xpc_object_t array, size_t index, xpc_object_t value); void xpc_array_append_value(xpc_object_t array, xpc_object_t value); xpc_object_t xpc_array_get_value(xpc_object_t array, size_t index); size_t xpc_array_get_count(xpc_object_t array); bool xpc_array_apply(xpc_object_t array, xpc_array_applier_t applier); void xpc_array_set_bool(xpc_object_t array, size_t index, bool value); void xpc_array_set_int64(xpc_object_t array, size_t index, int64_t value); void xpc_array_set_uint64(xpc_object_t array, size_t index, uint64_t value); void xpc_array_set_double(xpc_object_t array, size_t index, double value); void xpc_array_set_date(xpc_object_t array, size_t index, int64_t value); void xpc_array_set_data(xpc_object_t array, size_t index, const void *bytes, size_t length); void xpc_array_set_string(xpc_object_t array, size_t index, const char *value); void xpc_array_set_uuid(xpc_object_t array, size_t index, const uuid_t value); void xpc_array_set_fd(xpc_object_t array, size_t index, int value); void xpc_array_set_connection(xpc_object_t array, size_t index, xpc_connection_t value); bool xpc_array_get_bool(xpc_object_t array, size_t index); int64_t xpc_array_get_int64(xpc_object_t array, size_t index); uint64_t xpc_array_get_uint64(xpc_object_t array, size_t index); double xpc_array_get_double(xpc_object_t array, size_t index); int64_t xpc_array_get_date(xpc_object_t array, size_t index); const void * xpc_array_get_data(xpc_object_t array, size_t index, size_t *length); const uint8_t * xpc_array_get_uuid(xpc_object_t array, size_t index); const char * xpc_array_get_string(xpc_object_t array, size_t index); int xpc_array_get_fd(xpc_object_t array, size_t index); xpc_connection_t xpc_array_get_connection(xpc_object_t array, size_t index); ARRAYS
XPC arrays are collections of XPC objects ordered by index. The index is zero-based. XPC arrays are contiguous, and values must exist at all indexes between zero and the greatest index of the array. A hole in the array can be simulated by using a null object as returned by xpc_null_create(3). CREATION
The xpc_array_create() function returns a newly created array. The caller may optionally provide objects, a C array of XPC object references, to initialize the array. The count is used to specify the size of the C array. If objects is NULL, then count must be zero. If count speci- fies more elements than are actually present in values or if values is NULL and count is non-zero, the behavior is undefined. GETTING AND SETTING VALUES
The xpc_array_append_value() function may be used to append a value to the end of an array. This operation increases the count of the values in the array by one. The value of a specific index in the array may be set using the xpc_array_set_value() function. The value must be non-NULL, and the index must already exist (i.e. less than the count provided at creation or extended through previous append operations). The value at a specific index of an array may be retrieved using the xpc_array_get_value() function. The result of getting a non-existing index (i.e. one that was not specified at creation or through a previous append operation) in undefined. PRIMITIVE GET AND SET FUNCTIONS
Various functions exist for retrieving primitive C and operating system types directly from an array without the need for an intermediate boxed object. See xpc_object(3) for more information. The special XPC_ARRAY_APPEND constant may be used to append a value to the end of the array instead of operating on a specific index. SEE ALSO
xpc_object(3), xpc_objects(3), xpc_dictionary_create(3) Darwin 1 July, 2011 Darwin
All times are GMT -4. The time now is 01:52 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy