[Preliminaries: the discussion below will refer to a Java class named HelloWorld. Its totally irrelevant to this posting what that class does, since the problem that I describe has to do with the shell, not Java. Its just that the problem arose for me while doing some coding, and I could not think of a more universal illustration.
Nevertheless, if you need something concrete in order to duplicate my actions, then the source file HelloWorld.java that I used contained the text
and I compiled using
javac HelloWorld.java
]
Suppose that I execute the following command directly from the shell:
java -XX:OnError="gdb - %p" HelloWorld
Then it works perfectly fine, as expected.
Now suppose that I create the following shell script:
The output now is:
java -XX:OnError="gdb - %p" HelloWorld
Unrecognized option: -
Could not create the Java virtual machine.
OK, the echo line outputs exactly what was previously executed directly from the shell, but the script's attempt to execute it fails. The error message hints that the
"gdb - %p"
is actually being interpreted as 3 different words for some strange reason, namely
"gdb
-
%p"
In fact, I think that I can confirm this by modifying the script to be
which outputs
java -XX:OnError="gdb - %p" HelloWorld
+ java '-XX:OnError="gdb' - '%p"' HelloWorld
Unrecognized option: -
Could not create the Java virtual machine.
+ set +x
Notice how set -x puts the first pair of single quotes around just
-XX:OnError="gdb
and then the next pair around
%p"
So what is the shell script doing in its interpretation of the text that the shell command line does not do that is causing this to fail?
I guess that shell scripts are not exactly like saved command line sessions after all?
Could I work around this by using some sort of octal escape or something for the spaces inside "gdb - %p"?
how to parse the command line argument to look for '@' sign and the following with '.'.
In my shell script one of the argument passed is email address. I want to parse this email address to look for correct format.
rmjoe123@hotmail.com has '@' sign and followed by a '.'
to be more... (1 Reply)
how to parse the command line argument to look for '@' sign and the following with '.'.
In my shell script one of the argument passed is email address. I want to parse this email address to look for correct format.
rmjoe123@hotmail.com has '@' sign and followed by a '.'
to be more... (1 Reply)
Hi all,
Iam a beginer in shell scripting.
i need a script that can parse the arguments and store them in variables.
ex: ./myScript -v v1 -h v2 -c v3......
can someone suggest me...?
tnx in adv. (1 Reply)
I tried using the following options to parse the *.sh files in a dir
(the name can contain spaces). But each of them breaks:
FILESSH=$(ls /mysh/*.sh)
echo "$FILESSH" | while read FILE ; do --- do something --; done
This does not break for any whitespaces in filenames
for FILE in... (1 Reply)
i wanna passing an argument which read in a file or a set of files if the files are given in the command line, otherwise use STDIN if no file argument.
i got something like that, but it is not really working.
so can anyone help me? which one is better to use for and how? Use perl.
Thank you
... (0 Replies)
Hello all, I am relatively new to linux and bash scripting. I have what seems to be a simple question but I'm having trouble finding the answer.
The question is what is the difference between the variables $@ and $*. I've seen them both used in the same context, and I've tried a number of... (4 Replies)
in bash:
LIST=`cat $1`
for i in $LIST
do
...
done
how will i do this in perl ?
$1 is my first arguement. I'm a newbie in perl and will appreciate much your help guys ... (4 Replies)
Gooday
I have an argument string that contains 15 arguments.
The first 14 arguments are easy to handle because they are separated by spaces
ARG14=`echo ${ARGSTRING} | awk '{print $14}'`
The last argument is a text that may be empty or contain spaces. So any ideas on how I get the last... (23 Replies)
Hi guys,
I have created a csh script which allows user to pass input argument with the script like:
cluster_on_lev3.csh -t <value> -p <value>
Example:
cluster_on_lev3.csh -t 2.3 -p 0.05
Now I want to create an error code where if user passes input argument without spaces , the code... (16 Replies)
Hi everyone,
I'm trying to write my first ever shell script, the OS is Raspbian. The code I have written must be executed whenever a certain database has been modified. The database resides on a Windows server to which I have a mount point, and I have no control over the Windows server at all so... (2 Replies)