Fdupes fails in script works in cli

I am running a pretty much vanilla 15.5 (See below)
When I run fdupes from a script it fails and produces no output (See script and run below)
If I copy what was run in the script to the cli, I get proper output (See last example)
Does anyone have any ideas on what is incorrect in my script? Should this be reported as a bug?

Zypper Enabled Repo List by Priority
Verbosity: 2
#  | Alias                 | Name                                                         | Enabled | GPG Check | Refresh | Priority | Type   | URI                                                                | Service
---+-----------------------+--------------------------------------------------------------+---------+-----------+---------+----------+--------+--------------------------------------------------------------------+--------
11 | repo-packman          | Packman Repository                                           | Yes     | (r ) Yes  | Yes     |   90     | rpm-md | http://ftp.gwdg.de/pub/linux/misc/packman/suse/openSUSE_Leap_15.5/ | 
 4 | repo-backports-update | Update repository of openSUSE Backports                      | Yes     | (r ) Yes  | Yes     |   98     | rpm-md | http://download.opensuse.org/update/leap/15.5/backports/           | 
 9 | repo-non-oss          | Non-OSS Repository                                           | Yes     | (r ) Yes  | Yes     |   98     | rpm-md | http://download.opensuse.org/distribution/leap/15.5/repo/non-oss/  | 
10 | repo-oss              | Main Repository                                              | Yes     | (r ) Yes  | Yes     |   98     | rpm-md | http://download.opensuse.org/distribution/leap/15.5/repo/oss/      | 
13 | repo-sle-update       | Update repository with updates from SUSE Linux Enterprise 15 | Yes     | (r ) Yes  | Yes     |   98     | rpm-md | http://download.opensuse.org/update/leap/15.5/sle/                 | 
16 | repo-update           | Main Update Repository                                       | Yes     | (r ) Yes  | Yes     |   98     | rpm-md | http://download.opensuse.org/update/leap/15.5/oss                  | 
17 | repo-update-non-oss   | Update Repository (Non-Oss)                                  | Yes     | (r ) Yes  | Yes     |   98     | rpm-md | http://download.opensuse.org/update/leap/15.5/non-oss/             | 

[System Info]
 11:13:48  up 2 days  0:42,  5 users,  load average: 0.17, 0.25, 0.26
PRETTY_NAME="openSUSE Leap 15.5"
Kernel Version=5.14.21-150500.55.52-default
CPU op-mode(s):                       32-bit, 64-bit
PATH=/home/freda/bin-Heavy1:/home/freda/bin:/usr/local/bin:/usr/bin:/bin
uid=1001(freda) gid=100(users) groups=100(users),462(nordvpn),495(wheel)
Tue 23 Apr 11:13:48 MST 2024

Problem script

#!/bin/bash
#Updated via kate 240423

source elapsed.parm
source 000name

if [ ${#} -lt 1 ] ; then
   echo "$PRGNAM Input parameters must be specified"
   echo "Start Directory Required"
   exit 1
fi

CATDATE='%y%m%d_%H%M%S'
WHEN=$(date +"$CATDATE")

echo "$PRGNAM Begins at $(date)"
TIMESTART=$(date +"$ELPSDATE")

SEARCH="${1}"
echo "$PRGNAM Scanning for duplicate files in $SEARCH"

WHERE="$WHEN"_Duplicates.txt
echo "fdupes --size --recurse --order=name -- $SEARCH" > "$WHERE"   # Prime WHERE
echo " " >> "$WHERE"
echo "$PRGNAM Result File is {$WHERE}"

if ! fdupes --size --recurse --order=name -- "$SEARCH" >> "$WHERE" ; then
   echo "$PRGNAM FDUPES Failure - Check messages"
   exit 1
fi

echo "$PRGNAM Ends at $(date)"
TIMEENDS=$(date +"$ELPSDATE")
echo "$PRGNAM Elapsed Time $(elapsed "${TIMESTART}" "${TIMEENDS}")"

exit 0

freda@localhost.heavy1] ~ $ 00find-dupes "~/bin ~/bin-Heavy1"
00find-dupes: Begins at Tue 23 Apr 12:29:27 MST 2024
00find-dupes: Scanning for duplicate files in ~/bin ~/bin-Heavy1
00find-dupes: Result File is {240423_122927_Duplicates.txt}
fdupes: could not chdir to ~/bin ~/bin-Heavy1 <<<=======================
00find-dupes: Ends at Tue 23 Apr 12:29:28 MST 2024
00find-dupes: Elapsed Time 0 Days, 0 Hours, 0 Mins, 1 Secs
freda@localhost.heavy1] ~ $ 

But run from the cli

freda@localhost.heavy1] ~ $ fdupes --size --recurse --order=name -- ~/bin ~/bin-Heavy1
9429 bytes each:                        
/home/freda/bin-Heavy1/dar.incremental
/home/freda/bin-Heavy1/obsolete/dar.incremental

885 bytes each:
/home/freda/bin-Heavy1/cleanup.sqlite.all
/home/freda/bin-Heavy1/obsolete/cleanup.sqlite.all

4743 bytes each:
/home/freda/bin-Heavy1/dailybackup
/home/freda/bin-Heavy1/obsolete/dailybackup

932 bytes each:
/home/freda/bin-Heavy1/dardiff.olddar
/home/freda/bin-Heavy1/obsolete/dardiff.olddar
/home/freda/bin/dardiff.olddar

7598 bytes each:
/home/freda/bin-Heavy1/dar.backup
/home/freda/bin-Heavy1/obsolete/dar.backup
/home/freda/bin/Model-scripts/dar.backup.original
/home/freda/bin/Obsolete/dar.backup

1134 bytes each:
/home/freda/bin-Heavy1/dar.manager.fill
/home/freda/bin-Heavy1/obsolete/dar.manager.fill
/home/freda/bin/dar.manager.fill

1250 bytes each:
/home/freda/bin-Heavy1/obsolete/safe1.0TBmount-old
/home/freda/bin/safe1.0TBmount-old

717 bytes each:
/home/freda/bin-Heavy1/obsolete/safe1.0TBclose-old
/home/freda/bin/safe1.0TBclose-old

1943 bytes each:
/home/freda/bin-Heavy1/obsolete/safe1.0TBfsck-old
/home/freda/bin/safe1.0TBfsck-old

336 bytes each:
/home/freda/bin-Heavy1/obsolete/safe1.0TBumount-old
/home/freda/bin/safe1.0TBumount-old

2545 bytes each:
/home/freda/bin-Heavy1/obsolete/cbackup.darbackup
/home/freda/bin/Obsolete/cbackup.darbackup.save

32326 bytes each:
/home/freda/bin-Heavy1/dar.auto
/home/freda/bin-Heavy1/obsolete/dar.auto
/home/freda/bin/Model-scripts/dar.auto.original
/home/freda/bin/Obsolete/dar.auto

670 bytes each:
/home/freda/bin-Heavy1/dardiff.mediadar
/home/freda/bin/dardiff.mediadar

103 bytes each:
/home/freda/bin-Heavy1/parse-rsync.awk
/home/freda/bin/parse-rsync.awk

1427 bytes each:
/home/freda/bin-Heavy1/chkreboot
/home/freda/bin-Heavy1/obsolete/chkreboot

620 bytes each:
/home/freda/bin-Heavy1/chkhealth
/home/freda/bin-Heavy1/obsolete/chkhealth

171 bytes each:
/home/freda/bin/cbackup.darbackup.parm
/home/freda/bin/cbackup.parm

171 bytes each:
/home/freda/bin/Obsolete/00lastforum
/home/freda/bin/Obsolete/00lastforum.obs

277 bytes each:
/home/freda/bin/Obsolete/YorNtest
/home/freda/bin/choosetest

33 bytes each:
/home/freda/bin/Obsolete/dar.check.ignore
/home/freda/bin/dar.check.ignorelines

freda@localhost.heavy1] ~ $ 

I think this makes it one “word” for the shell.
In other words it is not seen as two file names when used in the script, but as one file name (with a space embedded).

And the equivalent outside the script would be

Which is not what you want.

1 Like

Good call!! Easy fix. Execution line in the script is now

fdupes --size --recurse --order=name -- ${1} ${2} ${3} ${4} >> "$WHERE"

Solved

Nice you found it.

BTW, thus should have been in Programming/Scripting and not in Applications.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.