I am using them in this way. $@ for creating an array, whereas I use $* to create a string.
What do you mean exactly by ---------- Post updated at 05:18 PM ---------- Previous update was at 05:12 PM ----------
I also want to get the directory name from the script that I run. I am using this line.
Any suggestions?
Basically, I do as follows
Inside the script raytrac.bash, I want to capture the directory path from where the script resides (i.e. I want to get /home/chrisd/tatsh/trunk/hstmy/bin/bash)
as in, arguments "A" "B" "C" would evaluate to "A B C" for $*, and "A" "B" "C" for "$@"
Using "$@" to create an array is redundant, as I've shown you. The arguments are all there already and can be used directly. In BASH you can even access them numerically:
I don't know why you'd need to cd into a directory to get its name. If you can cd into it, you obviously know its name already.
I would need to run some other scripts inside raytrac.bash.
For example, from raytrac.bash I want to run the following:
I do not want the path hardwired, as I would need to change it whenever I am on another system.
By running my script /home/chrisd/tatsh/trunk/hstmy/bin/bash/raytrac.bash, I want to get the directory path before raytrac.bash. This will get me the bash directory path.
---------- Post updated at 05:58 PM ---------- Previous update was at 05:52 PM ----------
Quote:
Originally Posted by Corona688
"$*" becomes a string. "$@" becomes a list.
as in, arguments "A" "B" "C" would evaluate to "A B C" for $*, and "A" "B" "C" for "$@"
Using "$@" to create an array is redundant, as I've shown you. The arguments are all there already and can be used directly. In BASH you can even access them numerically:
I don't know why you'd need to cd into a directory to get its name. If you can cd into it, you obviously know its name already.
Ok, so how would you code the section below in your opinion?
---------- Post updated at 06:30 PM ---------- Previous update was at 05:58 PM ----------
Quote:
Originally Posted by Corona688
"$*" becomes a string. "$@" becomes a list.
as in, arguments "A" "B" "C" would evaluate to "A B C" for $*, and "A" "B" "C" for "$@"
Using "$@" to create an array is redundant, as I've shown you. The arguments are all there already and can be used directly. In BASH you can even access them numerically:
I don't know why you'd need to cd into a directory to get its name. If you can cd into it, you obviously know its name already.
I came up with the piece below
Is this what you were suggesting? I am getting bit confused about this as I had to do start from iarg=1 and then continue till iarg is narg. I thought it goes to one less.
---------- Post updated at 06:57 PM ---------- Previous update was at 06:30 PM ----------
I can get the list of all arguments using either "$@" or "$*". However, the best one to use is "$@" I think, as "$*" might fail in some instances.
[QUOTE=kristinu;302609369]Ok, so how would you code the section below in your opinion?
No matter which $* of $@ you use, feeding it into echo is going to flatten it. tr can't tell the difference between spaces caused by spaces, and spaces caused by an argument being split, because they're both just spaces... You don't put arguments through a pipe, only bytes. If you want to feed it through pipes, you'll have to preserve the splitting yourself, probably by changing the separator into something strange, so that echo "$*" output a|b|c|d instead of a b c d. This will let us split it ourselves later without losing anything.
I'd redo the arguments splitting on | and =, so that I don't have to worry about the difference between --argument=asdf and --argument asdf. The IFS controls all splitting, and set -- sets arguments to any values you want, so we can shuffle the arguments creatively in one go.
I wouldn't transform everything into uppercase. That mangles filenames too, and UNIX filenames are case-sensitive -- they'd be ruined.
I also wouldn't use awk 9 times to process one argument when case can do everything the first try...
Pure builtins with no backticks necessary. And this doesn't even need BASH -- this should work equally well in BASH, KSH, ZSH, or even a plain Bourne shell.
Last edited by Corona688; 03-20-2012 at 01:03 PM..
I was doing like the code below, I was only taking care to putting to upcase on the left hand side of the "=" sign. As you say, ideally it would be good to have the script accept --argument=asdf and --argument asdf.
Having to code as your scheme seems quite long rather than just taking the upper case, but then as you say, it will handle both --argument=asdf and --argument asdf as expected.
Considering all this, you think your new code is fine?
I am unsure what set -- "$*" does. Would it be possible to explain better your comment
Hi all
I have spent half a day trying to create a shell script which reads a configuration file on a line by line basis.
The idea of the file is that each will contain server information, such as IP address and various port numbers. The line could also be blank (The file is user created). Here... (1 Reply)
Use and complete the template provided. The entire template must be completed. If you don't, your post may be deleted!
1. The problem statement, all variables and given/known data:
Creating bash script the dd command and its new options (-l -U)
-l options to lowercase contents of file
-U... (2 Replies)
Hi,
Just some questions on the script below...?
Given: bash-2.03$ command -a option1 name1 name2
ParseOptions()
{
local Len=${#@}
local Ctr=2 #always start at 2
local Name=()
local Iter=0
while ; do
if <- Is this correct? so I can get the $2... (2 Replies)
I'm reading about debugging aids in bash and have come across the set command. It says in my little book that an addition to typing
set
you can also use them "on the command line when running a script..." and it lists this in a small table:
set -o option Command Line... (5 Replies)
Being new to awk I have a really basic question. It just has to be in the archives but it didn't bite me when I went looking for it.
I've written an awk script, placed it in a file, added the "#!/usr/bin/awk -f" at the top of the script and away I go. "% myAwk <inputfile>" gives me exactly what... (2 Replies)
Hello everyone,
I have a perl script which takes various command line options from user like :
test.pl -i <input_file> -o <output_file> -d <value> -c <value>
Now I have multiple input files in a directory:
<input_file_1>
<input_file_2>
<input_file_3>
<input_file_4>
.....
....
...... (6 Replies)
Hi all,
I want to get options from command line by perl.
usage()
options:
-h Show this help message and exit
-t Name of tester
--timeout Set the timeout
-l ... (1 Reply)
I have to use shell script to run series of commands on another unix box by connecting through SSH and giving user credentials. For running commands on remote machine I have to use options reading from a local file.
Process:
Connecting to remote unix server <host1.ibm.com> through ssh
Login: ... (2 Replies)
my description from another thread...
here's my code:
#!/bin/bash
IFS=$'\n'
function OutputName() {
input=$1
echo $input
input=`echo "$input" | sed -e 's/.//'`
input=`echo "$input".avi`
output_name=$input
}
if ]; then
echo... (5 Replies)
If no arguments are entered I wanna be able to read 2 arguments, i have done like this but it doesnt work:
x=0
until #loop starts
do
if ; then
echo No arguments were entered, please enter 2 arguments.
read $1 $2
elif || ; then
echo $#... (0 Replies)