Loop with command line arguments


 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers Loop with command line arguments
# 1  
Old 12-22-2016
Loop with command line arguments

Ubuntum, Bash version: 4.3.46

Hi,

how can I create a loop where the command line arguments change (increase) and every time the number of arguments is different ?

Code:
### I have many gene names... that mean gene1=$2, gene2=$3, ...... geneN=$N+1
### some time the number of gene is 25, other time 56, ecc...


#!/usr/bin/env bash

file=$1 #File name
gene=$2 #Gene name

for ((b=2; b<=????; b++))

    do

snpl=${gene}"_snplist.txt"
snpc=${gene}"_snpcount.txt"

#SNP list
grep -w $gene $file > count/$file/$snpl

#SNP count
grep -w $gene $file | wc -l > count/$file/$snpc

    done

I have to create an array of arguments???
Code:
for i in "$@"; do echo "$i"; done

Thanks a lot !!!

Last edited by RudiC; 12-23-2016 at 05:21 AM.. Reason: Added CODE tags.
# 2  
Old 12-22-2016
Quote:
Originally Posted by echo manolis
### I have many gene names... that mean gene1=$2, gene2=$3, ...... geneN=$N+1
### some time the number of gene is 25, other time 56, ecc...

Hi, echo manolis
What would provide that information? Do you read it from a file? Do you enter the _number_ of genes at the command line as a parameter?

Code:
for ((b=2; b<=????; b++))

What does the magic number two (2) represent?
# 3  
Old 12-22-2016
Code:
#!/usr/bin/env bash  

file=$1 #File name 
gene=$2 #Gene name

I expect from your announcement the following program call:

Code:
yourprog file gene1 gene2 ...

I would put it into an array, like this:

Code:
#!/usr/bin/env bash  

file=$1 #File name 

# shift: $1 gets $0, $2 gets $1, ...  
shift 

all_genes=("$@")
# $@ => $1 ... $#

# 4  
Old 12-22-2016
Quote:
Originally Posted by stomp
Code:
#!/usr/bin/env bash  

file=$1 #File name 
gene=$2 #Gene name

I expect from your announcement the following program call:

Code:
yourprog file gene1 gene2 ...

I would put it into an array, like this:

Code:
#!/usr/bin/env bash  

file=$1 #File name 

# shift: $1 gets $0, $2 gets $1, ...  
shift 

all_genes=("$@")
# $@ => $1 ... $#

Wouldn't be a bit unrealistic to expect to enter 56 or more arguments at the command line?
# 5  
Old 12-22-2016
I dunno what he's up to. That is his question. All could be automated and generated. Of course scripting is mostly to reduce work and more seldom to do otherwise. If he'd like to have some improvement advices, he'll offer more details, so the solution could be stated and tips can be offered.

I'm asking myself even if there's a mess of tons of files behind this gene-scenario, a type of task which I read quite often in the short time I'm here - which overall slows down that search- and calculation-operations by factor 10 - 10 Billion compared to some less Shellcentric/Multi-Filecentric solution.

Last edited by stomp; 12-22-2016 at 07:28 PM..
# 6  
Old 12-23-2016
S/he seems to want to work off positional parameters $2 till $N where N is not predefined.
How about
Code:
for b
  do [ "$b" = "$1" ] && continue
      echo $b    # and further processing
  done

EDIT: Or, looking closer into post#1, adapt this to

Code:
file=$1; shift
for gene; do echo $file $gene; done

# 7  
Old 12-23-2016
Ithink the only really sensible consruct to use is a while-loop instead of a for-loop, like this:

Code:
while [ -n "$1" ] ; do
     echo "argument for this pass: $1"
     shift
done

This will cycle through all the presented positional parameters and "chop them off" one by one. A sample run of this code would look like:

Code:
$ mycode a b cde "f g h" i jkl
argument for this pass: a
argument for this pass: b
argument for this pass: cde
argument for this pass: f g h
argument for this pass: i
argument for this pass: jkl
$

This should work in ksh and bash alike.

I hope this helps.

bakunin
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Command line arguments for addition

Hi all, I am trying to write a code for addition of n numbers which will be passed by the user as command line arguments. I wrote the following code. add=0 for (( i = 1 ; i <= $# ; i++ )) do add=`expr $i + $add` done #echo "sum is : $add" input : $./add.sh 12 32 14... (7 Replies)
Discussion started by: PranavEcstasy
7 Replies

2. Shell Programming and Scripting

command line arguments

hi,,,, I want to create a command prompt, for example "prompt>", so my prompt need to handle commands, for example "prompt>cmd", so i want to know how to get arguments for my own commands cmd, i.e. default argc should contain arguments count and argv should point to the argument vector i.e, for... (2 Replies)
Discussion started by: vins_89
2 Replies

3. Shell Programming and Scripting

Command Line Arguments - not working

I am new to the world of Unix and shell scripting and have been trying to get the following simple script to work: #!/bin/bash echo "what is your age?" echo "you are $1 years old"I want to be able to enter my age on the command line, when prompted, and it return the... (1 Reply)
Discussion started by: meursault
1 Replies

4. UNIX for Dummies Questions & Answers

command line arguments

hi, can someone how to accept command line arguments as a variable using in script? like: ./scriptname arguments by accept arguments, I can use it in my script? thx! (1 Reply)
Discussion started by: ikeQ
1 Replies

5. UNIX for Dummies Questions & Answers

Command line arguments.

I am working on a script wherein i need the user to enter the Build ID for eg:the command line will show enter the build ID Now on entering the build ID it should be assigned to @ARGV. How can this be done.? (1 Reply)
Discussion started by: Varghese
1 Replies

6. Shell Programming and Scripting

command line arguments

-------------------------------------------------------------------------------- I have this while loop and at the end I am trying to get it to tell me the last argument I entered. And with it like this all I get is the sentence with no value for $1. Now I tried moving done after the sentence... (1 Reply)
Discussion started by: skooly5
1 Replies

7. Shell Programming and Scripting

i want to list all command line arguments except

Hi all i want to list out all command line arguments except $1 i have passed to a script. Ex: sh cmdline.sh one two three four five o/p: two three four five (3 Replies)
Discussion started by: naree
3 Replies

8. UNIX for Dummies Questions & Answers

arguments in command line

Hi all, How many arguments can we pass while testing a prgm at command line.. I encountered an issue while passing 10 arguments. For $10 its taking argument passed for $1 followed by 'zero'. can we pass more than 9 arguments /Is there any other way. Thanks, rrs (6 Replies)
Discussion started by: rrs
6 Replies

9. Programming

command line arguments

Hi How to pass multi line text as a command line argument to a program. (i.e) ./a.out hi this is sample 0 file1 where hi this is sample should be stored in argv 0 in argv and so on... (3 Replies)
Discussion started by: bankpro
3 Replies

10. UNIX for Advanced & Expert Users

Parsing the command line arguments

Is there a way to get the command line arguments. I am using getopt(3) but if the arguments are more than one for a particular option than it just ignores the second argument. For eg ./a.out -x abc def now abd will be got with -x using getopt "( x : )" and string abc\0def will get stored... (7 Replies)
Discussion started by: jayakhanna
7 Replies
Login or Register to Ask a Question