Repeat command with new variable for each line in txt file


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Repeat command with new variable for each line in txt file
# 15  
Old 05-10-2013
Quote:
Originally Posted by hanson44
The first two ways don't work, because the first $x is expanded. The third also does not work, and is quite confusing. To make it clear and easy to understand, the two best ways to write this are:
Code:
printf 'cp /path/to/app.app/folder/$x.plist\n' >> "/var/mobile/z_folder/$x.sh"
echo   'cp /path/to/app.app/folder/$x.plist'   >> "/var/mobile/z_folder/$x.sh"

Neither of your suggestions make any sense.

What's the point of writing
Code:
cp /path/to/app.app/folder/$x.plist

to
Code:
/var/mobile/z_folder/$x.sh

?

---

Quote:
Originally Posted by corona668

Agree with dgpickett. If you ever find yourself

1) generating code
2) using eval for basic, simple things
3) building shell scripts with shell scripts

...chances are you've missed or skipped the obvious way.
I agree too for the most part.
# 16  
Old 05-10-2013
All of the suggestions posted above share one and the same problem (at least when I use them with my shell environment):
One of the two variables doesn't get extracted.

Results:
1st doesn't get extracted: swallowed line or part that contains variable
2nd doesn't get extracted: all paths are written into a $x.sh file that magically contains all paths with the variables extracted.

I'd gladly listen to further ideas regarding this.

Till then:

I went another route to achieve what I want:

Code:
while read x
do
  printf "cp /path/to/app/xtzdero204.plist " >> /var/mobile/z_renapps/"$x".sh
  sed -i "s|xtzdero204|$x|g" /var/mobile/z_renapps/"$x".sh
done < /Applications/RenApple.app/applist.txt


Last edited by pasc; 05-10-2013 at 11:10 PM..
# 17  
Old 05-13-2013
You could do it all in sed, no printf, using the 'w filename' to make a copy of the line in the file.

Use printf more for formatting numbers in complex strings. The echo is cheaper for simple strings.

Last edited by DGPickett; 05-13-2013 at 12:55 PM..
# 18  
Old 05-13-2013
We still do not understand why you wish to make 10,000 individual scripts with slight differences. This kind of "need" usually points to a poor understanding of the shell.

Last edited by Corona688; 05-13-2013 at 02:29 PM..
# 19  
Old 05-26-2013
You are probably right about this.

I merge the multiple shells back into one in the next step.
It could probably be acheived in a simpler manner.

On a different standing:

it seems that

Code:
while read x
do
  CODE
done < /TEXT.txt

will only process 52 lines of this text file.
It always stops after the 52's line.

I shall post the full Script I have when someone can help me with understanding why it stops exactly after 52 repetitions.
# 20  
Old 05-28-2013
Well, assuming there are more lines, the answer is that the 52nd line $x poisoned CODE and it hung. Put an echo "x='$x'" before CODE to make sure which line in toxic.
# 21  
Old 05-28-2013
Quote:
Originally Posted by pasc
I shall post the full Script I have when someone can help me with understanding why it stops exactly after 52 repetitions.
I can think of many different reasons it could be messing up.

Perhaps one of your lines is reading from standard input, wasting it all to the point your loop only gets 52 lines worth before it runs out.

Maybe the 53rd line is different from the previous 52 in some way which exposes a bug latent in your program -- an unchecked divide by zero, an unexpected split due to spaces in a string causing a syntax error in your if-block, and other such things which only worked due to assumptions about your data which eventually stopped being true.

Are any of these your problem? Somehow I doubt it, they're all wild guesses, and I could keep guessing forever in random combinations. We cannot know, and you cannot expect us to know, until you post the code.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Read in txt file and run a different command for each line

hi, i'm trying to write a tcsh script that reads in a text file (one column) and the runs a different command for each line of text. i've found lots of example commands for bash, but not for tcsh. can anyone give me a hint? thanks, jill (8 Replies)
Discussion started by: giuinha
8 Replies

2. UNIX for Dummies Questions & Answers

Split Every Line In Txt Into Separate Txt File, Named Same As The Line

Hi All Is there a way to export every line into new txt file where by the title of each txt output are same as the line ? I have this txt files containing names: Kandra Vanhooser Rhona Menefee Reynaldo Hutt Houston Rafferty Charmaine Lord Albertine Poucher Juana Maes Mitch Lobel... (2 Replies)
Discussion started by: Nexeu
2 Replies

3. Shell Programming and Scripting

Repeat for different variable

Hey, I've created following script: var1=test1 setA=testA if ... touch $setA/$var1 ... fi I would like now the repeat the command touch (in this example) for different variables. So below, the varX should run 3 times (var1, var2, var4). Var3 is skipped in this example... (4 Replies)
Discussion started by: brononius
4 Replies

4. Shell Programming and Scripting

Need to append the date | abcddate.txt to the first line of my txt file

I want to add/append the info in the following format to my.txt file. 20130702|abcd20130702.txt FN|SN|DOB I tried the below script but it throws me some exceptions. <#!/bin/sh dt = date '+%y%m%d'members; echo $dt+|+members+$dt; /usr/bin/awk -f BEGIN { FS="|"; OFS="|"; } { print... (6 Replies)
Discussion started by: harik1982
6 Replies

5. Shell Programming and Scripting

How to echo $variable into txt file?

Hello i tried many times echo $variables into text file with no success for example: echo "#!/bin/sh BBHTAG=RFOCLT_check # What we put in bb-hosts to trigger this test COLUMN=RFOCLT # Name of the column, often same as tag in bb-hosts $BBHOME/bin/bbhostgrep $BBHTAG | while read... (5 Replies)
Discussion started by: mogabr
5 Replies

6. Shell Programming and Scripting

assigning variable in txt file

Hi all, One of my txt file has common format like . And I need to manually assign variable to "/a/b/c/file1/txt" , which has common text before "Calculated summary file:". I wonder if I can use some command to do that for me, that it read the file and check for that comonn text and assign... (2 Replies)
Discussion started by: emily
2 Replies

7. UNIX for Dummies Questions & Answers

Command to delete numbers at beginning of txt file line

Hello. I have the following issue: my txt file has the following format: train/dr4/fklc0/sx175.txt 0 80282 Severe myopia contributed to Ron's inferiority complex. train/dr4/fklc0/sx355.txt 0 42906 Dolphins are intelligent marine mammals. train/dr4/fklc0/sa2.txt awk 'NR%2==0' test1.txt >... (4 Replies)
Discussion started by: li_bi
4 Replies

8. Shell Programming and Scripting

Insert a line including Variable & Carriage Return / sed command as Variable

I want to instert Category:XXXXX into the 2. line something like this should work, but I have somewhere the wrong sytanx. something with the linebreak goes wrong: sed "2i\\${n}Category:$cat\n" Sample: Titel Blahh Blahh abllk sdhsd sjdhf Blahh Blah Blahh Blahh Should look like... (2 Replies)
Discussion started by: lowmaster
2 Replies

9. Shell Programming and Scripting

Problems reiterating values from txt file into a variable

Hi, I have written a script to retrieve phone numbers from an error log and output the phone numbers into an text file. I then use the list of phone numbers to process each value into a variable so I can run a sql query and update the database. My problem is I can only process the first value... (2 Replies)
Discussion started by: rdr411
2 Replies

10. Shell Programming and Scripting

command to list .txt and .TXT file

Hi expersts, in my directory i have *.txt and *.TXT and *.TXT.log, *.txt.log I want list only .txt and .TXT files in one command... how to ?? //purple (1 Reply)
Discussion started by: thepurple
1 Replies
Login or Register to Ask a Question