Re: Why is bash not behaving consistently?

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

 



Dan Track wrote:
On 8/12/05, Stephanus Fengler <fengler@xxxxxxxx> wrote:

Paul Howarth wrote:


Dan Track wrote:


I was writing this little bash script using find and I came along this
difference from using the same command on the command line and in bash
script.

Basically on the command line I have to type:

/usr/bin/find /opt/yum/packages/ -mtime +2 -a \( -regex .*.rpm -o
-regex .*.hdr \) -exec ls -lrt {} \;

whereas , in a bash script I have to type:

/usr/bin/find /opt/yum/packages/ -mtime +2 -a ( -regex .*.rpm -o
-regex .*.hdr ) -exec ls -lrt {} ;

As you can see I need to escape parenthesis and semi-colons on the
command line but I don't need to do that in a bash script.

Is there a reason for this?


How are you running this script? I would expect the first version to
work on the command-line and in a script, and the second version not
to work at all...

Paul.


Maybe your standard script interpreter isn't bash but simply sh? You may
add
# /bin/bash

as your first line to make sure bash is used.

Stephanus


The script interpreter is /bin/bash.

Can't reproduce this here.

With this script:

#!/bin/bash

/usr/bin/find /var/cache/yum/updates-released/packages/ -mtime +2 -a \( -regex .*.rpm -o -regex .*.hdr \) -exec ls -lrt {} \;

I get output:

-rw-r--r-- 1 root root 9763596 Aug 1 00:00 /var/cache/yum/updates-released/packages/evolution-2.2.3-2.fc4.i386.rpm -rw-r--r-- 1 root root 91382 Aug 1 00:00 /var/cache/yum/updates-released/packages/evolution-devel-2.2.3-2.fc4.i386.rpm



With this script:

#!/bin/bash

/usr/bin/find /var/cache/yum/updates-released/packages/ -mtime +2 -a ( -regex .*.rpm -o -regex .*.hdr ) -exec ls -lrt {} ;

I get the expected errors:

./run_yum_clean: line 5: syntax error near unexpected token `('
./run_yum_clean: line 5: `/usr/bin/find /var/cache/yum/updates-released/packages/ -mtime +2 -a ( -regex .*.rpm -o -regex .*.hdr ) -exec ls -lrt {} ;'



I'd also suggest escaping the asterisks, so in your original script that would be:


/usr/bin/find /opt/yum/packages/ -mtime +2 -a \( -regex .\*.rpm -o -regex .\*.hdr \) -exec ls -lrt {} \;

What output do you get from this, and what output from your unescaped script?

Paul.


[Index of Archives]     [Current Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite News]     [Yosemite Photos]     [KDE Users]     [Fedora Tools]     [Fedora Docs]

  Powered by Linux