nntp2http.com
Posting
Suche
Optionen
Hilfe & Kontakt

bash: test file1 -ef file2

Von: Andreas Leitgeb (avl@gamma.logic.tuwien.ac.at) [Profil]
Datum: 03.02.2008 01:37
Message-ID: <slrnfqa36s.4ug.avl@gamma.logic.tuwien.ac.at>
Newsgroup: at.linux
Ich hab da ein problem:
Laut (bash)  help test:
" ...
"       FILE1 -ef FILE2  True if file1 is a hard link to file2.
" ...

Diesen test hab ich in einem shell-script, das ich explizit
per "bash shellscript.sh" starte, aber irgendwie werden
zwei hardlinks auf denselben inode im script nicht als identisch erkannt.

"  if [ "$srcf" -ef "tgtf" ]; then
"     ....
"  else ...

Und obwohl "$srcf" und "tgtf" zwei hardlinks auf dieselbe
datei enthalten, komm ich in den else-zweig.  Fehlermeldung wird
dabei jedenfalls keine geschrieben.

Ein ins script eingebautes
" echo `type [`
liefert mir auch brav:
" [ is a shell builtin

Fuer eine (stichproben-)datei, fuer die er in den else-zweig kommt,
liefert mir aber ein interaktiv eingegebenes

" test dist/3ddesktop_0.2.9-6_i386.deb -ef archives/3ddesktop_0.2.9-6_i386.deb
&& echo foo

die erwartete Ausgabe "foo", also "weiss" die bash, dass die zwei
Dateien identisch sind. Ausserdem ist amit klar, dass die zwei dateien
auf demselben filesystem sind.

Was kanns da noch haben?

PS: die erste zeile im script ist #!/bin/bash, was aber egal sein
sollte, nachdem ich das script direkt an bash uebergebe.

Hintergrund: ich will zwei directories "synchron" halten, wobei in einem
directory die debian files eventuell mit doppelpunkt herumliegen, im anderen
aber mit %3a statt des Doppelpunktes, wie das eben im /var/cache/apt/archives
so ist.  /var/cache/apt/archives ist dabei ein symlink dorthin, wo
eben sowohl "dist" als auch "archives" nebeneinander herumliegt.

PPS: eine google-suche nach "shell test link" hat mich dann erst auf
irgendwie auf "-ef" gebracht, aber warum das nicht funktioniert ... keine
Ahnung.


[ Auf dieses Posting antworten ]

Antworten