Hello Community!
Let's say that we have some script which counts its arguments number: arguments_count.sh:
and some test script: test.sh:
Output after execute test.sh is:
What should I do to get output for "my_args" the same as for direct string?
Last edited by Scrutinizer; 11-09-2016 at 04:10 PM..
Reason: quote tags -> code tags
The problem is in the field splitting, after expansion of variable my_args. It is split into 6 fields: 123'45' and 6
You see you called it my_args, but you turned it into a string instead of discrete arguments. By unquoting the string expansion you are not getting the arguments back, but 6 fields that stem from that string split on white space...
An alternative would be to use positional parameters:
--
If you are using bash, ksh93 or zsh you could try arrays:
Scrutinizer is - as always - correct, but i suppose the problem comes from not understanding the quotation process:
The shell maintains a SINGLE flag for being inside a single- or double-quoted string. That means, that quotes can - unlike brackets - in no way be nested!
Consider:
These are completely different: there is not a string "def", which is part of a larger string "abc"def"ghi" (like the brackets-expression might be) but a string "abc", another string "ghi" and some unquoted "def" in between these two. So far so obvious and generally known.
But when it comes to single-quoted strings inside double-quoted strings some people think these are somehow nested:
But this is not the case at all! In fact a single-quote character loses it special power to start or end a quotation inside a double.quoted string (and vice versa). That is, in the above example, the character between "c" and "d" is just an ordinary character, like "x" or any other.
If you want to create "nested quotes", which "peel off" one layer after the other you have to use escapes:
Below is my ksh shell script where I need to check if variable fileprops is a subset of $1 argument.
echo "FILE PROPERTY: $fileprops"
echo "PARAMETER3: $1"
if ; then
echo "We are Good. $line FILE is found to be INTACT !! "
else
echo... (2 Replies)
Hi. I have a piece of code that reads and parses command line options. I'd like to alter it slightly to read from a string (that's set elsewhere in the script) rather than directly from the command line (arg). Can somebody show me how to do this? Many thanks.
My code is as follows:
typeset... (6 Replies)
Hi
The following code works when reading the arguments from the command line but fails when I try to read from a string. So this works
while ; do
case $1 in
-dbversion) if '`" ]; then { echo "ERROR: missing value for '$1' (seen '$2')"; usage; exit 1; } else { shift;... (6 Replies)
Hi guys,
been scratching round the forums and my mountain of resources.
Maybe I havn't read deep enough
My question is not how sed edits a stream and outputs it to a file, rather something like this below:
I have a .txt with some text in it :rolleyes:
abc:123:xyz
123:abc:987... (7 Replies)
I am passing a list of strings $list and want to remove all entries with --shift=number, --sort=number/number/..., --group=number/number/... Also are removed whether upper or lower case letters are used
For example the following will all be deleted from the list
--shift=12
--shift=2324... (7 Replies)
Hi all, I have a requirement where I am taking the first argument as argument name and storing the second argument in argument name as value.
Thanks to ppl here, i learnt to do it.:p
while ( $1 != "" )
set arg = $1
shift
set val = "$1"
echo "set... (2 Replies)
Let's say I want to print the arguments $4 till $#, how can I do this?
$# contains the number of arguments
$@ contain all the arguments as string
What i need is something like
for i in $4_till_$#; do
#do something with $i
convert $i ~/$output
done
The first 3 arguments are used as options... (6 Replies)
The following bash script does not work because the java/groovy code always thinks there are four arguments even if there are only 1 or 2. As you can see from my hideous backslashes, I am using cygwin bash on windows.
export... (1 Reply)
Hello, I was wondering if it were possible to call arguments passed to a script using a variable.
For example:
sh script.sh yes no good bad
x=$#
while
do
echo (last argument, then second last etc until first argument)
let x=($x-1)
done
should print out
bad
good
no (4 Replies)
Hi,
how can I join given arguments (not starting from the first one) to form one string, each argument separated by a space. For example, out of 5 given arguments, I'll like to start joining from the 3rd to the last. In python there exists something like ' '.join(sys.argv) and it starts joining... (5 Replies)