First of all. There are functions and libs for everything. Command-Line-Option Parsing may be done with getopt: Look here: PHP: getopt - Manual
(But you may ignore that, if your code works).
The following does not work:
If you decide to use #!, it has to be at the very beginning of the Script-File. Only then the kernel will read the following binary as interpreter for the actual file.
Further without testing the code myself, I suggest you test, if your Arg-parsing produces correct output. I suspect it may not fully work as expected and the values are not what you assume them to be. I suggest you insert some debug statements before+after Arg parsing like:
A logging function would help you to debug your code independently of the running environment(webserver or command line).
The above mentioned debug statements are easily usable with such a log function(print_r needs to be told, that it returns the formated dump data and so it does not print it to stdout itself).
PHP.net is a great and fabulous source of documentation for PHP. Nearly all functions documentation pages have directly attached real-life coding examples down at the bottom of each page.
hello,
i have a problem with strlen. I have written this:
for(y=13,z=0; cInBuf!=' ';y++)
{
cBuf=cInBuf;
z++;
}
len = strlen(cBuf);
out=len/2;
fprintf(outfile,"F%i",out);
If strlen is e.g. 22, it write F22. I want to write F2F2.
How can i do this?... (5 Replies)
Hello,
Just a little problem with the ksh function : strlen
I want to use this function in this little ksh program :
while read line ; do
TOTO=$line
TOTONB=strlen($TOTO)
echo $TOTONB (3 Replies)
Hi all,
I have a perl script which declares two variables and calls another perl script which accesses those variables. But I am unable to access the variables in the called script. My script is as follows:
my $ENV{a}="20";
system("perl called.pl");
and my called.pl contains:
print... (3 Replies)
In a declaration, I have:
const char comment_begin = "<!--";
const char comment_end = "-->";
const int comment_begin_len = strlen(comment_begin);
const int comment_end_len = strlen(comment_end);
When I compile, I get the warnings:
emhttpc.c:64: warning: initializer element is not... (10 Replies)
I have been getting some flack recently for my use of strlen() and strnlen(). Honestly I have always just taken their functionality for granted as being the easiest way of getting the length of a string. Is it really so much better to do pointer arithmetic? What am I gaining besides more... (3 Replies)
Hi!
Some minutes ago I've posted a question related with sed regexps because I need to catch information sended with forms with GET action. This is the post: https://www.unix.com/shell-programming-scripting/127800-regular-expression-sed.html
But now I have a new question. Does cgi scripts have... (0 Replies)
My OS (Debian) and gcc use the UTF-8 locale. This code says that the char size is 1 byte but the size of 'a' is really 4 bytes.
int main(void)
{
setlocale(LC_ALL, "en_US.UTF-8");
printf("Char size: %i\nSize of char 'a': %i\nSize of Euro sign '€': %i\nLength of Euro sign: %i\n",... (8 Replies)
Hello All,
I am getting this error while compiling my application on IBM AIX 5.3.
As I tried to define _XOPEN_SOURCE=500 in makefile, that didn't work.
Please help us to resolve the error. (0 Replies)
Hi! I've a C program as shown below..
The line numbers and the statements of the program are separated by a space..
1 #include<stdio.h>
2 char a,b,c;
3 float x,y,z;
4 int main()
5 {
6 int d,e,f;
7 // further declarations
8 // further declarations
9 /* body*/
10 }
11 void fun1()
12... (1 Reply)
Hello,
This function was copied into my code, which was compiled without error/warning, but when executed there is always Segmentation fault at the end after the output (which seems correct!):
void get_hashes(unsigned int hash, unsigned char *in)
{
unsigned char *str = in;
int pos =... (7 Replies)
Discussion started by: yifangt
7 Replies
LEARN ABOUT OPENSOLARIS
getopt
getopt(1) User Commands getopt(1)NAME
getopt - parse command options
SYNOPSIS
set -- ` getopt optstring $ * `
DESCRIPTION
The getopts command supersedes getopt. For more information, see NOTES below.
getopt is used to break up options in command lines for easy parsing by shell procedures and to check for legal options. optstring is a
string of recognized option letters; see getopt(3C). If a letter is followed by a colon (:), the option is expected to have an argument
which may or may not be separated from it by white space. The special option - is used to delimit the end of the options. If it is used
explicitly, getopt recognizes it; otherwise, getopt generates it; in either case, getopt places it at the end of the options. The posi-
tional parameters ($1 $2 ...) of the shell are reset so that each option is preceded by a - and is in its own positional parameter; each
option argument is also parsed into its own positional parameter.
EXAMPLES
Example 1 Processing the arguments for a command
The following code fragment shows how one might process the arguments for a command that can take the options -a or -b, as well as the
option -o, which requires an argument:
set -- `getopt abo: $*`
if [ $? != 0 ]
then
echo $USAGE
exit 2
fi
for i in $*
do
case $i in
-a | -b) FLAG=$i; shift;;
-o) OARG=$2; shift 2;;
--) shift; break;;
esac
done
This code accepts any of the following as equivalent:
cmd -aoarg filename1 filename2
cmd -a -o arg filename1 filename2
cmd -oarg -a filename1 filename2
cmd -a -oarg -- filename1 filename2
ATTRIBUTES
See attributes(5) for descriptions of the following attributes:
+-----------------------------+-----------------------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+-----------------------------+-----------------------------+
|Availability |SUNWcsu |
|CSI |enabled |
+-----------------------------+-----------------------------+
SEE ALSO Intro(1), getopts(1), getoptcvt(1), sh(1), shell_builtins(1), getopt(3C), attributes(5)DIAGNOSTICS
getopt prints an error message on the standard error when it encounters an option letter not included in optstring.
NOTES
getopt will not be supported in the next major release. For this release a conversion tool has been provided, namely, getoptcvt. For more
information, see getopts(1) and getoptcvt(1).
Reset optind to 1 when rescanning the options.
getopt does not support the part of Rule 8 of the command syntax standard (see Intro(1)) that permits groups of option-arguments following
an option to be separated by white space and quoted. For example,
cmd -a -b -o "xxx z yy" filename
is not handled correctly. To correct this deficiency, use the getopts command in place of getopt.
If an option that takes an option-argument is followed by a value that is the same as one of the options listed in optstring (referring to
the earlier EXAMPLES section, but using the following command line:
cmd -o -a filename
getopt always treats it as an option-argument to -o; it never recognizes -a as an option. For this case, the for loop in the example shifts
past the filename argument.
SunOS 5.11 7 Jan 2000 getopt(1)