findutils-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Findutils-patches] xargs problem


From: Bernhard Voelker
Subject: Re: [Findutils-patches] xargs problem
Date: Wed, 21 Dec 2016 07:40:53 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1

On 12/20/2016 10:35 PM, aws backup wrote:
> Ok I started the screen command like this:
> 
> *screen -dmS test /bin/bash -c "/path/to/fswatch.sh"*

if the script is executable, then you can omit the "/bin/bash -c" here.

> then the first script fswatch.sh:
> 
> *#!/bin/bash
> fswatch -0 -Ie '.*\.*$' -i '.*\.mp4$' /path/to/folder \
>      | xargs -0 -n 1 /path/to/s3cmd.sh*
> 
> then the second script s3cmd.sh:
> 
> *#!/bin/bash
>  filename="$(basename "$1")"
>  terminal-notifier -message "s3cmd Upload '$filename' started"
> 
>  s3cmd put "$1" s3://bucket/ \
>    | tee /path/to/logfile.txt \
>    | tee >(mail -s 'Upload $filename' address@hidden <mailto:address@hidden>) 
> \
>        && /usr/local/bin/terminal-notifier -message "s3cmd Upload of 
> '$filename' done"*
> *
> *
> The second tee command is to get the output also in the screen terminal to 
> see what's going on when I attach the screen.

tee can do that, maybe you look here to find out how:
  http://www.gnu.org/software/coreutils/tee

> Now what's happening. I change a filename. xargs transfers first the old file 
> name (before renaming) to the script.
> Therefore I get the notifications upload started and upload done for the old 
> filename and following error from s3cmd
> (also as email): 
> 
> *ERROR: Parameter problem: Nothing to upload.*
> *Null message body; hope that's ok*
> *
> *
> Which is correct because the old file is not existing anymore. 
> 
> Then xargs transfers the new file name (after renaming) to the script and 
> everything works as expected. Just the
> variable "$filename" in the mail command doesn't work. The subject of the 
> notification email is "Upload $filename".
> 
> How can I avoid that the old file name is transferred to the script?

I do not know fswatch, so you should have a look into its manual how
to suppress that.

> Why does the mail command not understand $filename?

This is because you have single quotes ('...') around the message text.
Therefore, the shell doe no variable expansion.

  $ v=world
  $ echo 'hello $v'
  hello $v
  $ echo "hello $v"
  hello world

But all this is far beyond the initial xargs question.  You're probably
much better off asking in some shell scripting forum than here on the
findutils project mailing list.

Have a nice day,
Berny



reply via email to

[Prev in Thread] Current Thread [Next in Thread]