Checking XCOPY Exit Value in Cygwin Bash

Igor Peshansky pechtcha@cs.nyu.edu
Sun Aug 6 16:39:00 GMT 2006


On Sun, 6 Aug 2006, Shane wrote:
> Hi all,

Hi. <http://cygwin.com/acronyms/#PCYMTWLL>. Reading the one-line below
was extremely painful in the web archives. See for yourself:
<http://cygwin.com/ml/cygwin/2006-08/msg00169.html>.
> I am writing a automated build script for my project that will be
> run under cygwin. I will copy my updated source files to the build
> directory and if there are updated files, the executables will be built.
> To copy the source files, I had to use XCOPY since the directory
> structure should be preserved in the destination directory also.

Nope, you didn't have to. Something like
(cd "2ドル/.." && find "2ドル" -name "*.1ドル" | tar cfT - -) | tar xfC - "3ドル"
would do the job of "XCOPY /S" using POSIX means.
> To copy only the updated files, I used the /D switch for XCOPY.

If you go POSIX, you can use the --keep-newer-files tar option.
> Now since I want
> to execute the source compile only if files in the build directory have
> been updated, I have to use the exit codes of XCOPY inside the script. I
> tried checking the value of $! after executing XCOPY but it didnt work.

Of course it didn't. Please read a good bash tutorial, or the "Special
Parameters" section of the bash manpage.
> I couldn't find a solution in the internet too. Currently I am piping
> the standard output to a file and checking if the number of files copied
> is 0 or not. But I think this is not an elegant solution. This is what I
> am doing now.
>> [script]
> copied=false
> # Helper Function
> copy_files()
> {
> echo copying *.1ドル files in 2ドル to 3ドル\\2ドル
> xcopy /DSYI 2ドル\\*.1ドル 3ドル\\2ドル | tee copy.log
>> while read amount ; do
> if [ ${amount::1} != "0" ]; then
> copied=true;
> fi
> done < copy.log
> }
> cd ../source
>> copy_files h . ..\\build
> copy_files c . ..\\build
> copy_files cpp . ..\\build
> rm -f copy.log
> ! $copied && echo "Files up-to-date. Skipping build" && exit 0
> cd ../build
> # Start the Build Process
> [/script]
>> Can you please provide me a way of checking the XCOPY exit code:
> reference
> [http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/xcopy.mspx?mfr=true]
> within Bash?

It's just like checking any other exit code in bash: reference "man bash".
HTH,
	Igor
-- 
				http://cs.nyu.edu/~pechtcha/
 |\ _,,,---,,_	 pechtcha@cs.nyu.edu | igor@watson.ibm.com
ZZZzz /,`.-'`' -. ;-;;,_		Igor Peshansky, Ph.D. (name changed!)
 |,4- ) )-,_. ,\ ( `'-'		old name: Igor Pechtchanski
 '---''(_/--' `-'\_) fL	a.k.a JaguaR-R-R-r-r-r-.-.-. Meow!
"Las! je suis sot... -Mais non, tu ne l'es pas, puisque tu t'en rends compte."
"But no -- you are no fool; you call yourself a fool, there's proof enough in
that!" -- Rostand, "Cyrano de Bergerac"
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/


More information about the Cygwin mailing list

AltStyle によって変換されたページ (->オリジナル) /