use vimdiff inside while read


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting use vimdiff inside while read
# 1  
Old 09-22-2011
use vimdiff inside while read

Hi,

I need to read a file name from a txt file, found the difference in two folders, then modify the file using vimdiff,

Code:
while read file
do
 diff src/$file dest/$file > /dev/null 2>&1
 if [ $? -eq 0]; then
    vimdiff src/$file dest/$file 
fi
done < ./my_text_file

since the stdin has been redirect to file my_text_file, vimdiff can't work properly.

anyone can help me to fix it?

Moderator's Comments:
Mod Comment Video tutorial on how to use code tags in The UNIX and Linux Forums.


thanks.

peter
# 2  
Old 09-22-2011
Try this:

Code:
while IFS= read -r; do
  diff src/"$REPLY" dest/"$REPLY" || ( 
    exec 0< /dev/tty
    vimdiff src/"$REPLY" dest/"$REPLY" 
    )
done < infile

These 2 Users Gave Thanks to radoulov For This Post:
# 3  
Old 09-22-2011
Quote:
Originally Posted by radoulov
Try this:

Code:
while IFS= read -r; do
  diff src/"$REPLY" dest/"$REPLY" || ( 
    exec 0< /dev/tty
    vimdiff src/"$REPLY" dest/"$REPLY" 
    )
done < infile

works like a charm
# 4  
Old 12-30-2011
Quote:
Originally Posted by radoulov
Try this:

Code:
while IFS= read -r; do
  diff src/"$REPLY" dest/"$REPLY" || ( 
    exec 0< /dev/tty
    vimdiff src/"$REPLY" dest/"$REPLY" 
    )
done < infile

------------------------------------

could anyone please explain how this script work ?
# 5  
Old 12-30-2011
It redirects the standard input to the controlling terminal inside the loop:

Code:
exec 0< /dev/tty

In this way the program vimdiff reads the user input instead of the stream coming from the pipe.
# 6  
Old 01-02-2012
Thanks,

Could you please explain the significance of the diff command as well

Code:
diff src/"$REPLY" dest/"$REPLY" ||
 ...


Last edited by radoulov; 01-02-2012 at 10:23 AM.. Reason: Code tags!
# 7  
Old 01-02-2012
This is a logical OR:

Code:
command1 || command2

In this case command2 will be executed only if command1 returns status different than 0 (i.e. if the files to be compared are different).
This User Gave Thanks to radoulov For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Case inside While read File

Hi Experts, Need your guidance for case statement. I tried many way but no success yet.Now my existing code is doing something like below. Each Line of the input file contains one test case.#!/bin/bash FILE=$1 while read LINE; do do COMMAND done < $FILE Now I want to modify the code... (6 Replies)
Discussion started by: pradyumnajpn10
6 Replies

2. Shell Programming and Scripting

Unable to read user input inside a loop

Hi, This query is a part of a much more lengthy script. I wish to look for all the files in a folder named "data" which in this case has two files i.e. plan.war and agent.properties. For all the files found under data I wish to ask the user as to where they wish copy the files to. Below,... (14 Replies)
Discussion started by: mohtashims
14 Replies

3. Shell Programming and Scripting

Update file record inside read loop

Hi, I am reading file records inside a while loop, and want to update the record when certain condition is met. How can I update a file while being read? I want to avoid using temporary files, copy, rename, ... while IFS=',' read -r f1 f2 do function(f1,f2) if then <add... (1 Reply)
Discussion started by: ysrini
1 Replies

4. UNIX for Advanced & Expert Users

vimdiff jump to other file or switch windows

This took me quite awhile to find so I wanted to share this with other people. To switch windows in vimdiff or to navigate windows in vimdiff or to change windows in vimdiff try the following: The ":vertical" command can be inserted before another command that splits a window. ... (0 Replies)
Discussion started by: cokedude
0 Replies

5. UNIX for Advanced & Expert Users

how to read a file inside jar

how to read the text file inside the jar without extracting jar. (3 Replies)
Discussion started by: karthikn
3 Replies

6. Shell Programming and Scripting

Read from user inside a while statement

Hi there I want to ask to a user something about each line of a file. This is my code: #cat test.txt first line second line third line #cat test.sh #!/bin/ksh read_write () { echo "Do you want to print the line (YES/NO)?\n" read TEST case ${TEST} in YES) return 0;; ... (3 Replies)
Discussion started by: tirkha
3 Replies

7. Shell Programming and Scripting

how to read line inside expect script

hi, i have an existing ftp script that needs to be translated to SFTP so i have to use expect script to automate the login to the remote server. Now im facing with a problem becaise i have at least 50 files to be renamed ont he remote server. It's a hassle to hardcode every single command... (1 Reply)
Discussion started by: The One
1 Replies

8. Shell Programming and Scripting

read command (input) inside the while loop

Hi, 'read' command is not working inside the while loop, How can I solve this? Rgds, Sharif. (2 Replies)
Discussion started by: sharif
2 Replies

9. Shell Programming and Scripting

input inside while read loop

Hi all Does anyone have a script that will allow me to stop inside a while read loop. I want to pause the loop until a enter is pressed. e.g. While read line do echo something if LINECOUNT > 40 then read ENTER?"PRESS ENTER TO CONT..." ... (3 Replies)
Discussion started by: jhansrod
3 Replies

10. UNIX for Dummies Questions & Answers

read inside a while loop

Hi all, In a while loop, like below... while read line do read choice case $choice in 1) echo "xxx" esac done < file why I can't run the read choice???? (3 Replies)
Discussion started by: dta4316
3 Replies
Login or Register to Ask a Question