Menω principale
 Notizie
 Grafica
 Forum
 Links
 Retro Trailer
 Recensioni
 Modelli Amiga
 Storia Amiga
 Retro-Gamers
 Lista Utenti
 Contatti
 Policy sito
Ricerca Google

Login

Nick


Password


02 Febbraio 2020 Postato da: AMG_Novice_Usr
Confrontare (riconoscere se uguali o diversi) 2 files testuali da uno script di AmigaDOS
Avrei bisogno di fare una cosa, almeno in teoria, molto semplice:
ho due files testuali, creati con ED, diciamo "testo1" e "testo2".
Entrambi nel path:
sys:miei_docs
Il file "testo1" ospita una stringa ASCII siffatta:
abc
Il file "testo2" ospita una stringa ASCII siffatta:
abc
(per inciso: non esiste il quarto carattere per nessuno dei 2 files, intendo che non ho premuto ENTER come quarto carattere,
quindi non dovrei avere il carattere LF = LineFeed = ASCII 10 = 0x0A … ciascun file ha quei 3 caratteri, punto e basta).
Quindi i 2 files sono identici.
Adesso mi faccio uno script in AmigaDOS che dovrebbe fare una cosa molto semplice, ossia verificare se i 2 files in questione
sono identici oppure no … io pensavo che funzionasse in questo modo:
if exists sys:miei_docs/testo1
if exists sys:miei_docs/testo2
echo "i due files esistono … confrontiamoli"
if sys:miei_docs/testo1 EQ sys:miei_docs/testo2 [val]
echo "UGUALI"
else
echo "NON uguali"
endif
endif
endif
Il risultato stampato da AmigaDOS a video, su CLI/Shell, è sempre "NON uguali" (a volte non ho messo il parametro val, a volte si, ad ogni
modo mi sembra che la cosa non stia funzionando).
Forse perché funziona così:
IF stringa1 (oppure valore numerico 1) EQ stringa2 (oppure valore numerico 2)
le 2 stringhe (cioè i 2 paths) sono diversi, ergo "NON uguali"
Sapete come realizzare questo mero confronto in AmigaDOS, fra 2 files testuali, e capire se sono uguali o diversi?
Ho provato anche altri approcci (tentativi patetici, che si fanno quando non sai che pesci prendere), come ad esempio copiare ciascun
file suddetto su un file di comodo in ram:env, chiaramente dopo aver creato dei files / variabili di ambiente del tipo:
setenv file_di_appoggio1 sys:c/ed
setenv file_di_appoggio2 sys:c/ed
e poi fare il confronto con IF tra "file_di_appoggio1" e "file_di_appoggio2" … ovviamente nulla di buono!
Ho anche fantasticato nel modo seguente (chiedo scusa ad AmigaDOS per essermi inventato sintassi nuove ...):
if (type >nil: sys:miei_docs/testo1) EQ (type >nil: sys:miei_docs/testo2)
echo "UGUALI"
else
echo "NON uguali"
endif
Peggio ancora: AmigaDOS si arrabbia, dicendomi: wrong parameters!
Avevo pensato a questa cosa perché con type (l'equivalente Amiga di "cat" in Linux) <un file> dovrei avere, come ritorno, la stringa ASCII contenuta nel file, poi tale stringa l'avrei indirizzata non sullo standard-output, ovvero CLI-Shell, ma nel nulla, questo solo per non vederla a video, e poi avrebbe dovuto essere:
IF "abc" EQ "abc" -> UGUALI
E invece niente da fare!
Grazie in anticipo!

Modificato il 02/02/2020 alle ore 18:04:44

Commenti: 14  Aggiungi  - Leggi

Indice: forum / Richieste di Aiuto


Post inviati: 1588

Visulizza profilo Messaggio Personale
80.181.111.*** Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:72.0) Gecko/20100101 Firefox/72.0
Commento 1
majinga 2 Febbraio 2020    19:04:43
Un consiglio, potresti mettere il codice (anche lo pseudo codice) dentro i tag quote, così da rendere il tutto più leggibile? O distinguere meglio i vari pezzi con degli spazi. Ogni tanto fai prendere un po di fiato al lettore

Commento modificato il 02/02/2020 alle ore 19:06:29

AfAOne

Post inviati: 5953

Visulizza profilo Messaggio Personale
87.21.251.*** Mozilla/5.0 (Windows NT 6.1; rv:72.0) Gecko/20100101 Firefox/72.0
Commento 2
AfAOne 2 Febbraio 2020    20:25:12
Prova cone queste utility, attenzione agli spazi con Amiga OS, per esempio un File di qualsiasi tipo può avere come nome uno o più spazi, in pratica si riesce ad avere un file invisibile "senza nome", in passato usato da software o giochi, i file mantegono le caratteristiche qundi lanciabili da CLI o cliccabili da Icona, cosa impossibile da fare su Windows per esempio.

Anche se siamo OT, occhio anche agli "attributi", su Amiga un file testo può diventare un eseguibile se gli dai attributo "S"

http://aminet.net/package/util/misc/ADiffView


http://aminet.net/package/dev/gg/diffutils-bin

http://aminet.net/package/util/misc/gdiff

Commento modificato il 02/02/2020 alle ore 20:36:38


Immagine AROS One x86/68k
- AfA One - AfA One PPC - Amilator AfA One - Amithlon AfA One - WinUAE OS 4.1


utente amiga quadratico medio

Post inviati: 701

Visulizza profilo Messaggio Personale
93.39.69.*** Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko
Commento 3
AMG_Novice_Usr 4 Febbraio 2020    13:48:47
Ho provato ADiffView: funziona, però avendo bisogno di qualcosa del genere ma che si possa usare facilmente senza GUI, ma solo da
terminale CLI/Shell e quindi all'interno di uno script scritto da me in Amiga DOS, ho preferito rivolgermi a CMP, un programma/comando
facente parte della suite, immagino nata per Linux, GNU_diff_diff3_cmp_sdiff_patch.
CMP mi è piaciuto, ad esempio se scrivo su CLI/Shell il comando:
cmp <testo1> <testo2>
dove testo1 è fatto da una riga contenente questi 3 caratteri ASCII:
abc
mentre testo2 è questo:
123
cmp ritorna una cosa del tipo:
testo1, testo2, diff: character 1, line 1
Ok, funziona!
Ho letto che oltre a tornare un'informazione ASCII del tipo:
testo1, testo2, diff: character 1, line 1
cmp ritorna anche (credo come tutti i comandi Amiga DOS … giusto?) un exit code, un return code, ed il readme di cmp dice testualmente:
exit-codes:
0 - if 2 files are identical
1 - if 2 files are different
2 - troubles have been occurred
A me interessa inserire, in un mio script Amiga DOS, il seguente pseudo-codice:
cmp --silent testo1 testo2
; // il parametro silent serve a rendere silenzioso cmp, quindi non vengono stampate a video le differenze fra i 2 files,
; // però l'exit code 0/1/2 viene, ovviamente, ritornato ugualmente:

if < exit code di cmp == 0 >
echo "i 2 files sono uguali"
else
echo "i 2 files NON sono uguali"
endif

Bene … vorrei sapere come faccio ad implementare in Amiga DOS questo if … ovvero cosa posso mettere al posto di:
< exit code di cmp == 0 >
Come faccio a "catturare" il return code del comando precedente ed a leggerlo nel mio if? (da cui l'esecuzione del segmento opportuno...).
Ho letto il read-me del comando IF (lo posto dopo per chi volesse), però continuo ad avere dubbi …


A500-Plus + A501 + switch meccanico per selezione Double-kickstart 1.3 v. 34.5 / 3.1 v. 40.63 /// A600, Rev. MB. 1.5, espansione in trap-door 1MB chip-ram, Kick-Cloanto 45.66, HDD interno a tracce da 2GB modello MK2104MAV by Toshiba su porta IDE: partizione DH1 con WB2.1 (default) + partizione DH2 con WB3.1 /// A500, Kick 1.3 v. 34.5, scheda espansione in trap-door da 512KB /// A600, espansione da 4MB-fast-ram innestata con zoccolo direttamente su 68K, Kick 2.05 v. 37.300, espansione di chip-ram in trap-door da 1MB, CF da 4GB su adattatore interno CF/IDE: partizione DH0 con CWB GAAE, partizione DH1 con WB2.1, partizione DH2 con WB1.3 /// A500, Rev. MB 6A, Kick 1.3 v. 34.5, A520-TV-RF-Modulator /// A500, PWR-LED ROSSO. Kick 1.2 v. 33.180 /// A500-Plus, PWR-LED ROSSO, Kick 2.04 v. 37.175, Driver DF1 esterno Savage DMF 322, A590 alimentato da alimentatore di CD32, con dentro espansione da 2MB di fast-ram + HDD SCSI Seagate ST32151N da 2GB - DH0 con WB 2.04 e DH1 con WB 1.2 /// A1200, 68EC020, Kick 3.0 v. 39.106, HDD a tracce Hitachi 40GB interno su porta IDE con installato CWB, espansione A1208 in trap-door da 8MB-fast-ram, PLipBox su porta parallela per collegamento via Ethernet a Internet /// Commodore 64 Assy NO. 250425 + floppy drive 5’’ 1/4 modello 1541

utente amiga quadratico medio

Post inviati: 701

Visulizza profilo Messaggio Personale
93.39.69.*** Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko
Commento 4
AMG_Novice_Usr 4 Febbraio 2020    13:49:30
IF


Format: IF [NOT] [WARN] [ERROR] [FAIL] [<string> EQ|GT|GE <string>]
[VAL] [EXISTS <filename>]

Template: NOT/S, WARN/S, ERROR/S, FAIL/S, EQ/K, GT/K, GE/K, VAL/S,
EXISTS/K

Purpose: To evaluate conditional operations in script files.

Path: Internal

Specification:

In a script file, IF, when its conditional is true, carries out all the
subsequent commands until an ENDIF or ELSE command is found. When the
conditional is not true, execution skips directly to the ENDIF or to an
ELSE. The conditions and commands in IF and ELSE blocks can span more than
one line before their corresponding ENDlFs.

ELSE is optional, and nested IFs jump to the nearest ENDIF.

The additional keywords are as follows:

NOT


Reverses the interpretation of the result.

WARN


True if previous return code is greater than or equal to 5.

ERROR


True if previous return code is greater than or equal to 10; only available
if you set FAILAT to greater than 10.

FAIL


True if previous return code is greater than or equal to 20; only available
if you set FAILAT to greater than 20.

<a> EQ <b>


True if the text of a and b is identical (disregarding case).

EXISTS <file>


True if the file exists.

If more than one of the three condition-flag keywords (WARN, ERROR, FAIL)
are given, the one with the lowest value is used.

IF supports the GT (greater than) and GE (greater than or equal to)
comparisons. Normally, the comparisons are performed as string comparisons.
However, if the VAL option is specified, the comparison is a numeric
comparison.

You can use NOT GE for LT and NOT GT for LE.

You can use local or global variables with IF by prefacing the variable name
with a $ character.

Example 1:

IF EXISTS Work/Prog
TYPE Work/Prog
ELSE
ECHO "It's not here"
ENDIF

If the file Work/Prog exists in the current directory, then AmigaDOS
displays it. Otherwise, AmigaDOS displays the message "It's not here" and
continues after the ENDIF.

Example 2:

IF ERROR
SKIP errlab
ENDIF
ECHO "No error"
LAB errlab

If the previous command produced a return code greater than or equal to 10,
then AmigaDOS skips over the ECHO command to the errlab label.

See also:

EXECUTE
FAILAT
LAB
QUIT
SKIP

A500-Plus + A501 + switch meccanico per selezione Double-kickstart 1.3 v. 34.5 / 3.1 v. 40.63 /// A600, Rev. MB. 1.5, espansione in trap-door 1MB chip-ram, Kick-Cloanto 45.66, HDD interno a tracce da 2GB modello MK2104MAV by Toshiba su porta IDE: partizione DH1 con WB2.1 (default) + partizione DH2 con WB3.1 /// A500, Kick 1.3 v. 34.5, scheda espansione in trap-door da 512KB /// A600, espansione da 4MB-fast-ram innestata con zoccolo direttamente su 68K, Kick 2.05 v. 37.300, espansione di chip-ram in trap-door da 1MB, CF da 4GB su adattatore interno CF/IDE: partizione DH0 con CWB GAAE, partizione DH1 con WB2.1, partizione DH2 con WB1.3 /// A500, Rev. MB 6A, Kick 1.3 v. 34.5, A520-TV-RF-Modulator /// A500, PWR-LED ROSSO. Kick 1.2 v. 33.180 /// A500-Plus, PWR-LED ROSSO, Kick 2.04 v. 37.175, Driver DF1 esterno Savage DMF 322, A590 alimentato da alimentatore di CD32, con dentro espansione da 2MB di fast-ram + HDD SCSI Seagate ST32151N da 2GB - DH0 con WB 2.04 e DH1 con WB 1.2 /// A1200, 68EC020, Kick 3.0 v. 39.106, HDD a tracce Hitachi 40GB interno su porta IDE con installato CWB, espansione A1208 in trap-door da 8MB-fast-ram, PLipBox su porta parallela per collegamento via Ethernet a Internet /// Commodore 64 Assy NO. 250425 + floppy drive 5’’ 1/4 modello 1541

utente amiga quadratico medio

Post inviati: 701

Visulizza profilo Messaggio Personale
93.39.69.*** Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko
Commento 5
AMG_Novice_Usr 4 Febbraio 2020    13:58:58
Un'ultima domandina:
per far funzionare i comandi della suite GNU-diff-diff3-cmp, è necessario avere in:
sys:libs
la libreria "ixemul.library", vers >= 47
Ho trovato la versione 48 su Aminet … tutto ok.
il prefisso "ix" sta per "Linux"?
Voglio dire … questa libreria fornisce di fatto uno strato SW di emulazione di alcune componenti di Linux (sicuramente di una sua versione/distro
estremamente basica) su piattaforma Amiga? Perché se vai a vedere la sintassi dei comandi della suite di cui sopra, e leggi qualche read-me di
questi, noti che la sintassi è proprio Linux-like.
Sapete qualcosa di questo mondo, appunto "linuxare" Amiga?
Io in passato ho provato una strada per "amigare" Linux, ovvero creare una micro SDcard, da mettere in RaspberryPI, e su questa SD abbiamo
una distro di Debian/Rasbian chiamata "Amibian", dove puoi selezionare fra OCS/ECS/AGA, 68xyz, tante altre cose … ed emuli Amiga su Linux.

A500-Plus + A501 + switch meccanico per selezione Double-kickstart 1.3 v. 34.5 / 3.1 v. 40.63 /// A600, Rev. MB. 1.5, espansione in trap-door 1MB chip-ram, Kick-Cloanto 45.66, HDD interno a tracce da 2GB modello MK2104MAV by Toshiba su porta IDE: partizione DH1 con WB2.1 (default) + partizione DH2 con WB3.1 /// A500, Kick 1.3 v. 34.5, scheda espansione in trap-door da 512KB /// A600, espansione da 4MB-fast-ram innestata con zoccolo direttamente su 68K, Kick 2.05 v. 37.300, espansione di chip-ram in trap-door da 1MB, CF da 4GB su adattatore interno CF/IDE: partizione DH0 con CWB GAAE, partizione DH1 con WB2.1, partizione DH2 con WB1.3 /// A500, Rev. MB 6A, Kick 1.3 v. 34.5, A520-TV-RF-Modulator /// A500, PWR-LED ROSSO. Kick 1.2 v. 33.180 /// A500-Plus, PWR-LED ROSSO, Kick 2.04 v. 37.175, Driver DF1 esterno Savage DMF 322, A590 alimentato da alimentatore di CD32, con dentro espansione da 2MB di fast-ram + HDD SCSI Seagate ST32151N da 2GB - DH0 con WB 2.04 e DH1 con WB 1.2 /// A1200, 68EC020, Kick 3.0 v. 39.106, HDD a tracce Hitachi 40GB interno su porta IDE con installato CWB, espansione A1208 in trap-door da 8MB-fast-ram, PLipBox su porta parallela per collegamento via Ethernet a Internet /// Commodore 64 Assy NO. 250425 + floppy drive 5’’ 1/4 modello 1541

AfAOne

Post inviati: 5953

Visulizza profilo Messaggio Personale
87.21.251.*** Mozilla/5.0 (Windows NT 6.1; rv:72.0) Gecko/20100101 Firefox/72.0
Commento 6
AfAOne 4 Febbraio 2020    14:54:21
Citazione

Un'ultima domandina:
per far funzionare i comandi della suite GNU-diff-diff3-cmp, è necessario avere in:
sys:libs
la libreria "ixemul.library", vers >= 47
Ho trovato la versione 48 su Aminet … tutto ok.

Si io su OS 3.9 di "ixemul.library" ho la versione 63.1 per CPU 060 e non è la sola c'è anche "ixemul.trace", "ixemul_poolmem.library" e "ixnet.library" tutte utilizzate anche da molte altre applicazioni Amiga compreso Browser ma anche Giochi.

Citazione

Sapete qualcosa di questo mondo, appunto "linuxare" Amiga?

Amiga ha sempre avuto un legame con Linux o meglio Unix anche a livello Hardware, qualche info in Questo mio vecchio post.

Commento modificato il 04/02/2020 alle ore 14:56:05


Immagine AROS One x86/68k
- AfA One - AfA One PPC - Amilator AfA One - Amithlon AfA One - WinUAE OS 4.1


utente amiga quadratico medio

Post inviati: 701

Visulizza profilo Messaggio Personale
93.39.69.*** Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko
Commento 7
AMG_Novice_Usr 5 Febbraio 2020    13:50:50
Ho risolto con il semplice comando IF … EQ !!!
Ecco la soluzione trovata al momento:
all'avvio del mio script faccio:
if exists ram:env/comando1
delete ram:env/comando1
endif
if exists ram:env/comando2
delete ram:env/comando2
endif
Questo perché all'avvio dello script, se ho delle variabili di ambiente/files testuali già presenti, li voglio cancellare … voglio partire sempre
da zero, da una condizione nota e di reset/pulizia.
Poi faccio:
setenv ram:env/comando1 sys:c/ed
setenv ram:env/comando2 sys:c/ed
Quindi adesso ho 2 files/variabili di ambiente pulite, pronte ad essere foraggiate da dei valori.
Ecco i valori:
copy FROM sys:miei_files/cmd1 TO ram:env/comando1
copy FROM sys:miei_files/cmd2 TO ram:env/comando2
Quindi adesso ho dato a "comando1" e "comando2" i valori dei 2 files di partenza, ossia (supponiamo):
comando1:
abc
comando2:
abc
(i due files sono identici).
Adesso faccio, da script:
IF $comando1 EQ $comando2
echo "UGUALI"
ELSE
echo "DIVERSI"
ENDIF
Effettivamente Amiga DOS stampa "UGUALI" … funziona. Ovviamente ho verificato che se:
comando1:
abc
comando2:
123
Amiga DOS stampa "DIVERSI" … funziona!
Prima mi aveva ingannato questa modalità di scrittura (senza $):
IF comando1 EQ comando2
echo "UGUALI"
ELSE
echo "DIVERSI"
ENDIF
In questo modo, a prescindere da cosa c'è dentro al file "comando1" ed al file "comando2", ritornava sempre e comunque "DIVERSI",
in quanto SENZA il carattere $, Amiga DOS interpreta gli argomenti a destra e sinistra di EQ come mere stringhe ASCII, ed effettivamente
la stringa "comando1" è diversa dalla stringa "comando2". Se invece anteponiamo $ di fronte a quei 2 nomi, Amiga DOS non confronta le
2 stringhe/nomi, ma effettua il confronto fra il valore/contenuto della variabile globale di nome "comando1" e quella di nome "comando2".
Funziona anche così:
IF VAL $comando1 EQ $comando2
echo "UGUALI"
ELSE
echo "DIVERSI"
ENDIF
Diciamo che la svolta è stata l'utilizzo di $.
Appena posso voglio provare in questo modo:
IF $cmd1 EQ $cmd2
echo "UGUALI"
ELSE
echo "DIVERSI"
ENDIF
Dove cmd1 e cmd2 non sono delle variabili in ram:env, ma dei banali files di testo in sys:miei_files.


A500-Plus + A501 + switch meccanico per selezione Double-kickstart 1.3 v. 34.5 / 3.1 v. 40.63 /// A600, Rev. MB. 1.5, espansione in trap-door 1MB chip-ram, Kick-Cloanto 45.66, HDD interno a tracce da 2GB modello MK2104MAV by Toshiba su porta IDE: partizione DH1 con WB2.1 (default) + partizione DH2 con WB3.1 /// A500, Kick 1.3 v. 34.5, scheda espansione in trap-door da 512KB /// A600, espansione da 4MB-fast-ram innestata con zoccolo direttamente su 68K, Kick 2.05 v. 37.300, espansione di chip-ram in trap-door da 1MB, CF da 4GB su adattatore interno CF/IDE: partizione DH0 con CWB GAAE, partizione DH1 con WB2.1, partizione DH2 con WB1.3 /// A500, Rev. MB 6A, Kick 1.3 v. 34.5, A520-TV-RF-Modulator /// A500, PWR-LED ROSSO. Kick 1.2 v. 33.180 /// A500-Plus, PWR-LED ROSSO, Kick 2.04 v. 37.175, Driver DF1 esterno Savage DMF 322, A590 alimentato da alimentatore di CD32, con dentro espansione da 2MB di fast-ram + HDD SCSI Seagate ST32151N da 2GB - DH0 con WB 2.04 e DH1 con WB 1.2 /// A1200, 68EC020, Kick 3.0 v. 39.106, HDD a tracce Hitachi 40GB interno su porta IDE con installato CWB, espansione A1208 in trap-door da 8MB-fast-ram, PLipBox su porta parallela per collegamento via Ethernet a Internet /// Commodore 64 Assy NO. 250425 + floppy drive 5’’ 1/4 modello 1541

utente amiga quadratico medio

Post inviati: 701

Visulizza profilo Messaggio Personale
93.39.69.*** Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko
Commento 8
AMG_Novice_Usr 5 Febbraio 2020    13:55:03
Come faccio a tabbizzare / indentare una riga?
Anche stavolta ho provato ad indentare il codice in Amiga DOS, ma quando vado a postare, le indentazioni
vanno perdute!

A500-Plus + A501 + switch meccanico per selezione Double-kickstart 1.3 v. 34.5 / 3.1 v. 40.63 /// A600, Rev. MB. 1.5, espansione in trap-door 1MB chip-ram, Kick-Cloanto 45.66, HDD interno a tracce da 2GB modello MK2104MAV by Toshiba su porta IDE: partizione DH1 con WB2.1 (default) + partizione DH2 con WB3.1 /// A500, Kick 1.3 v. 34.5, scheda espansione in trap-door da 512KB /// A600, espansione da 4MB-fast-ram innestata con zoccolo direttamente su 68K, Kick 2.05 v. 37.300, espansione di chip-ram in trap-door da 1MB, CF da 4GB su adattatore interno CF/IDE: partizione DH0 con CWB GAAE, partizione DH1 con WB2.1, partizione DH2 con WB1.3 /// A500, Rev. MB 6A, Kick 1.3 v. 34.5, A520-TV-RF-Modulator /// A500, PWR-LED ROSSO. Kick 1.2 v. 33.180 /// A500-Plus, PWR-LED ROSSO, Kick 2.04 v. 37.175, Driver DF1 esterno Savage DMF 322, A590 alimentato da alimentatore di CD32, con dentro espansione da 2MB di fast-ram + HDD SCSI Seagate ST32151N da 2GB - DH0 con WB 2.04 e DH1 con WB 1.2 /// A1200, 68EC020, Kick 3.0 v. 39.106, HDD a tracce Hitachi 40GB interno su porta IDE con installato CWB, espansione A1208 in trap-door da 8MB-fast-ram, PLipBox su porta parallela per collegamento via Ethernet a Internet /// Commodore 64 Assy NO. 250425 + floppy drive 5’’ 1/4 modello 1541

Post inviati: 4141

Visulizza profilo Messaggio Personale
151.33.107.*** Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0
Commento 9
Mck 5 Febbraio 2020    15:41:35
Non essendo un forum di programmazione il comando [code] che permette l'identazione non è supportato.

I MIEI AMIGA

4000T OS 3.9 PPC/68060 + CyberVisio 64/3D + HD 20g + DVD - 4000D in Tower OS 3.9 PPC/68060 Ram 128M + ram scheda 2+16M + zip 100M + Ide HD 40G + usb Deneb + V-Lab + Toccata + Mediator con: Woodoo 3 + Scheda rete + Impact Vision 24 - 4000D OS 3.9 68060 ram 32m + ram scheda 2+16M + HD 20g + zip 100 ide + DVD + V-lab + Seriale veloce + Scheda video EGS- 3000T OS 3.9 PPC/68060 128M + HD scsi 10G + Usb Deneb + CD sCSI + mediator con: scheda rete + controllo SCSI Adaptec + scheda audio + Voodoo 5 - 3000 OS 3.1 68040 + emulatore pc 286 - 2000 processore 68030 + genlock + espansione ram + emulatore pc 8080 - 1200 Tower OS 3.9 PPC/68060 + HD 20G + Mediator con: scheda rete - 1200 OS 3.1 68060 + HD 20G + Scheda rete pcmcia - 1000 espansione Ram 4M - 600 con espansione ram + HD5G - 500 Plus con espansione ram - 500 con espansione ram - CDTV - CD32

CLONI AMIGA

Sam440ep-Flex OS 4.1 - EFIKA MorphOS 2.6

Post inviati: 1588

Visulizza profilo Messaggio Personale
37.163.236.*** Mozilla/5.0 (Linux; Android 9; TA-1032) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.136 Mobile Safari/537.36
Commento 10
majinga 5 Febbraio 2020    15:42:00
In effetti ho avuto lo stesso problema.
Credo che il parser di amigapage elimini tutti gli spazi a inizio riga.
Prova a scrivere inserendo un carattere ad inizio riga, tipo #

EDIT:
No, niente, elimina automaticamente tutti gli spazi doppi.
Ha ragione Mck, non essendo prevista una cosa del genere, manca un tag apposito.

Commento modificato il 05/02/2020 alle ore 16:44:14

Temibile Pirata

Post inviati: 2144

Visulizza profilo Messaggio Personale
185.51.13.*** Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0
Commento 11
SukkoPera 5 Febbraio 2020    17:41:17
Secondo me stai travisando un po'... Sarei molto stupito se una shell offrisse un meccanismo built-in di confronto del contenuto di file. Non c'è nemmeno nella strabordante bash, figurati.

I confronti che stai facendo sono semplicemente sul valore delle variabili. Senza $ confronti le stringhe tali e quali, con il $ passi ai loro valori.

Per confrontare il contenuto di file dovresti usare i comandi già suggeriti. Su Linux useresti i classici cmp, diff, ecc... Il cmp proposto qua probabilmente è lo stesso. Per verificare il valore di ritorno puoi usare "if error" o "if warn", vedi qua .

Inoltre anche il modo in cui usi setenv mi torna poco: il primo argomento dovrebbe essere un nome di variabile, non un path. Prova a vedere qui .

Commento modificato il 05/02/2020 alle ore 17:43:42


I miei progetti Retrogaming

utente amiga quadratico medio

Post inviati: 701

Visulizza profilo Messaggio Personale
79.51.61.*** Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko
Commento 12
AMG_Novice_Usr 6 Febbraio 2020    22:57:15
Citazione

Secondo me stai travisando un po'... Sarei molto stupito se una shell offrisse un meccanismo built-in di confronto del contenuto di file. Non c'è nemmeno nella strabordante bash, figurati.

Tu magari sono anni che stai dietro a questa roba, io solo da qualche settimana (un'oretta la sera, dopo casa e lavoro) … di questo passo
magari, un giorno, arriverò con saccenza a dirti "Secondo me stai travisando un po'..."
Ad ogni modo, credo già da ora che sia tu a travisare: non ho mai sognato una funzionalità built-in di confronto, anche perché una CLI/Shell,
in qualunque OS, altro non è che un'emulazione di seriale fra un utente ed il sistema operativo, quindi un canale bidirezionale di comunicazione
fra questi 2 elementi. Quello che chiedevo è se esiste un programma, chiamabile dall'emulazione di seriale TX/RX fra uomo e OS,
alias CLI/Shell, Shell come processo padre, questo programma X come processo figlio, magari
anche in foreground, programma che una volta chiamato dalla Shell si occupi di ritornare un valore 0 oppure 1, 0 se i due files passati
come argomenti sono uguali, 1 se altrimenti, e tale ritorno utilizzabile da IF … ELSE … ENDIF. Nessuna funzionalità built-in, semmai built-out,
come quando da Linux/bash chiami un programma il cui eseguibile si trova in /bin.
Citazione

I confronti che stai facendo sono semplicemente sul valore delle variabili.
Senza $ confronti le stringhe tali e quali, con il $ passi ai loro valori.

fin qui c'ero arrivato
Citazione

Per confrontare il contenuto di file dovresti usare i comandi già suggeriti. Su Linux useresti i classici cmp, diff, ecc... Il cmp proposto qua probabilmente è lo stesso. Per verificare il valore di ritorno puoi usare "if error" o "if warn", vedi qua

Per quello che dovevo fare io va benissimo usare IF … EQ … ELSE … ENDIF
Anzi, vorrei sottoporre lo script con un piccolo commento, così da avere suggerimenti circa come poter fare la stessa cosa in modi
diversi, e magari più semplici/efficienti (al prossimo post ...)
Citazione

Inoltre anche il modo in cui usi setenv mi torna poco: il primo argomento dovrebbe essere un nome di variabile, non un path.

Può essere entrambe le cose … anche un path … basta che il path punti alla variabile di ambiente … funziona lo stesso


A500-Plus + A501 + switch meccanico per selezione Double-kickstart 1.3 v. 34.5 / 3.1 v. 40.63 /// A600, Rev. MB. 1.5, espansione in trap-door 1MB chip-ram, Kick-Cloanto 45.66, HDD interno a tracce da 2GB modello MK2104MAV by Toshiba su porta IDE: partizione DH1 con WB2.1 (default) + partizione DH2 con WB3.1 /// A500, Kick 1.3 v. 34.5, scheda espansione in trap-door da 512KB /// A600, espansione da 4MB-fast-ram innestata con zoccolo direttamente su 68K, Kick 2.05 v. 37.300, espansione di chip-ram in trap-door da 1MB, CF da 4GB su adattatore interno CF/IDE: partizione DH0 con CWB GAAE, partizione DH1 con WB2.1, partizione DH2 con WB1.3 /// A500, Rev. MB 6A, Kick 1.3 v. 34.5, A520-TV-RF-Modulator /// A500, PWR-LED ROSSO. Kick 1.2 v. 33.180 /// A500-Plus, PWR-LED ROSSO, Kick 2.04 v. 37.175, Driver DF1 esterno Savage DMF 322, A590 alimentato da alimentatore di CD32, con dentro espansione da 2MB di fast-ram + HDD SCSI Seagate ST32151N da 2GB - DH0 con WB 2.04 e DH1 con WB 1.2 /// A1200, 68EC020, Kick 3.0 v. 39.106, HDD a tracce Hitachi 40GB interno su porta IDE con installato CWB, espansione A1208 in trap-door da 8MB-fast-ram, PLipBox su porta parallela per collegamento via Ethernet a Internet /// Commodore 64 Assy NO. 250425 + floppy drive 5’’ 1/4 modello 1541

utente amiga quadratico medio

Post inviati: 701

Visulizza profilo Messaggio Personale
79.51.61.*** Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko
Commento 13
AMG_Novice_Usr 6 Febbraio 2020    22:58:15
lab main_loop

if exists sys:enrico_docs/cmd_rx
delete sys:enrico_docs/cmd_rx >nil:
endif

copy sys:enrico_docs/cmd sys:enrico_docs/cmd_rx

echo "wait for command ..."
copy aux: sys:enrico_docs/cmd_rx

if exists ram:env/txa
delete ram:env/txa >nil:
endif
if exists ram:env/txb
delete ram:env/txb >nil:
endif

setenv txa sys:c/ed
setenv txb sys:c/ed

copy sys:enrico_docs/cmd1 ram:env/txa
copy sys:enrico_docs/cmd_rx ram:env/txb

if $txa eq $txb
echo "abc"
else
echo "???"
endif

skip main_loop back

A500-Plus + A501 + switch meccanico per selezione Double-kickstart 1.3 v. 34.5 / 3.1 v. 40.63 /// A600, Rev. MB. 1.5, espansione in trap-door 1MB chip-ram, Kick-Cloanto 45.66, HDD interno a tracce da 2GB modello MK2104MAV by Toshiba su porta IDE: partizione DH1 con WB2.1 (default) + partizione DH2 con WB3.1 /// A500, Kick 1.3 v. 34.5, scheda espansione in trap-door da 512KB /// A600, espansione da 4MB-fast-ram innestata con zoccolo direttamente su 68K, Kick 2.05 v. 37.300, espansione di chip-ram in trap-door da 1MB, CF da 4GB su adattatore interno CF/IDE: partizione DH0 con CWB GAAE, partizione DH1 con WB2.1, partizione DH2 con WB1.3 /// A500, Rev. MB 6A, Kick 1.3 v. 34.5, A520-TV-RF-Modulator /// A500, PWR-LED ROSSO. Kick 1.2 v. 33.180 /// A500-Plus, PWR-LED ROSSO, Kick 2.04 v. 37.175, Driver DF1 esterno Savage DMF 322, A590 alimentato da alimentatore di CD32, con dentro espansione da 2MB di fast-ram + HDD SCSI Seagate ST32151N da 2GB - DH0 con WB 2.04 e DH1 con WB 1.2 /// A1200, 68EC020, Kick 3.0 v. 39.106, HDD a tracce Hitachi 40GB interno su porta IDE con installato CWB, espansione A1208 in trap-door da 8MB-fast-ram, PLipBox su porta parallela per collegamento via Ethernet a Internet /// Commodore 64 Assy NO. 250425 + floppy drive 5’’ 1/4 modello 1541

utente amiga quadratico medio

Post inviati: 701

Visulizza profilo Messaggio Personale
79.51.61.*** Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko
Commento 14
AMG_Novice_Usr 6 Febbraio 2020    23:16:42
è un riconoscitore di comandi che un PC-host invia all'Amiga tramite Rs232.

Nel drawer su Amiga:

sys:enrico_docs/

ho una collezione di files testuali, ovvero:

cmd1
cmd2
cmd3
…

dove, nell'esempio:

cmd1:
abc

cmd2:
123

ecc …

Lo script chiede, ad ogni iterazione del loop:

"wait for command ..."

e lancia il comando in foreground "copy" fra seriale aux: e un file "cmd_rx".

Adesso da PC invio una stringa ASCII, ad esempio "abc" seguita dal 28 decimale: grazie al 28, copy termina, dopo aver scritto
il comando "abc" sul file "cmd_rx" che ospita il comando inviato da PC, quindi ricevuto da Amiga.

Lo script vuole capire se è arrivato il comando "cmd1" ("abc") oppure se ne è arrivato un qualsiasi altro.

Allora faccio, solo per convenienza:

copy sys:enrico_docs/cmd1 ram:env/txa
copy sys:enrico_docs/cmd_rx ram:env/txb

quindi la variabile di ambiente txa ospita il comando, presente nel mio "database", da confrontare con quello appena arrivato, ospitato da txb.

if $txa eq $txb
echo "abc"
else
echo "???"
endif

Se è arrivato "abc", stampo a video "abc", else "???".

In questo modo posso farmi/prevedermi una collezione di comandi cmd1 … cmdN, ad ogni iterazione chiedo "dammi un comando",
da PC invio ciò che voglio, quindi lo script potrà riconoscere se è arrivato da PC un comando appartenente alla suddetta collezione o no.

è il mio primo scriptino … sicuramente ci sono altri modi (migliori) per fare la stessa cosa.

Sapete indicarne qualcuno (con Amiga DOS, eventualmente anche con Amiga Basic).

Grazie!


A500-Plus + A501 + switch meccanico per selezione Double-kickstart 1.3 v. 34.5 / 3.1 v. 40.63 /// A600, Rev. MB. 1.5, espansione in trap-door 1MB chip-ram, Kick-Cloanto 45.66, HDD interno a tracce da 2GB modello MK2104MAV by Toshiba su porta IDE: partizione DH1 con WB2.1 (default) + partizione DH2 con WB3.1 /// A500, Kick 1.3 v. 34.5, scheda espansione in trap-door da 512KB /// A600, espansione da 4MB-fast-ram innestata con zoccolo direttamente su 68K, Kick 2.05 v. 37.300, espansione di chip-ram in trap-door da 1MB, CF da 4GB su adattatore interno CF/IDE: partizione DH0 con CWB GAAE, partizione DH1 con WB2.1, partizione DH2 con WB1.3 /// A500, Rev. MB 6A, Kick 1.3 v. 34.5, A520-TV-RF-Modulator /// A500, PWR-LED ROSSO. Kick 1.2 v. 33.180 /// A500-Plus, PWR-LED ROSSO, Kick 2.04 v. 37.175, Driver DF1 esterno Savage DMF 322, A590 alimentato da alimentatore di CD32, con dentro espansione da 2MB di fast-ram + HDD SCSI Seagate ST32151N da 2GB - DH0 con WB 2.04 e DH1 con WB 1.2 /// A1200, 68EC020, Kick 3.0 v. 39.106, HDD a tracce Hitachi 40GB interno su porta IDE con installato CWB, espansione A1208 in trap-door da 8MB-fast-ram, PLipBox su porta parallela per collegamento via Ethernet a Internet /// Commodore 64 Assy NO. 250425 + floppy drive 5’’ 1/4 modello 1541


Utenti Online
Utenti registrati: 1206 dal 1 Gennaio 2006
di cui online: 2 registrati - Kyle - braian -
15 non registrati

Benvenuto all'ultimo utente registrato: zulu

Buon Compleanno a Hannibal - 

© Amigapage 1998 - 2007 - Sito italiano dedicato alla piattaforma Amiga ed evoluzioni varie.
Struttura del sito interamente ideata e realizzata da Marco Lovera e Alessandra Lovera - Tutto il materiale inserito all'interno del sito θ dei rispettivi autori/creatori.
E' assolutamente vietata la riproduzione o la manipolazione di tutti i contenuti o parte di essi senza l'esplicito consenso degli amministratori e degli autori/creatori.

Eseguito in 0.11520290374756 secondi