Avatar billede Slettet bruger
25. maj 2009 - 17:31 Der er 10 kommentarer og
1 løsning

Bash concatenation af strings giver uventet output

Hej,

Jeg har følgende script, som jeg kører i bash:
FTP_PATH=/mirrors/postfix-release/official/
VERSION=postfix-2.6.1.tar.gz
echo $FTP_PATH
echo $VERSION
echo ${FTP_PATH}${VERSION}


Det giver følgende output:
/mirrors/postfix-release/official/
postfix-2.6.1.tar.gz
postfix-2.6.1.tar.gzease/official/


Jeg havde forventet at se:
/mirrors/postfix-release/official/
postfix-2.6.1.tar.gz
/mirrors/postfix-release/official/postfix-2.6.1.tar.gz


Det ser altså ud til at den anden string, ${VERSION}, laver carriage return og dermed overskriver den første string, ${FTP_PATH} - hvordan undgåes dette?

Bash version:
GNU bash, version 3.2.39(1)-release (i586-suse-linux-gnu)
Copyright (C) 2007 Free Software Foundation, Inc.


Vh Mathias.
Avatar billede Slettet bruger
25. maj 2009 - 18:01 #1
Jeg har ny info.

Hvis jeg kopierer scriptet til en bash terminal, virker det.

Jeg kører scriptet med:
[i]bash script.sh[/]

Jeg har prøvet forskellige parametre til bash, som ikke har given den ønskede virkning.
Avatar billede Slettet bruger
25. maj 2009 - 18:02 #2
Jeg mener selvfølgelig
bash script.sh

Jeg fik ikke lige lukket [i] tagget ordentligt :)
Avatar billede arne_v Ekspert
25. maj 2009 - 22:38 #3
Mystisk.

[arne@arne3 ~]$ bash --version
GNU bash, version 3.00.15(1)-release (i686-redhat-linux-gnu)
Copyright (C) 2004 Free Software Foundation, Inc.
[arne@arne3 ~]$ cat z.bash
FTP_PATH=/mirrors/postfix-release/official/
VERSION=postfix-2.6.1.tar.gz
echo $FTP_PATH
echo $VERSION
echo ${FTP_PATH}${VERSION}
[arne@arne3 ~]$ bash z.bash
/mirrors/postfix-release/official/
postfix-2.6.1.tar.gz
/mirrors/postfix-release/official/postfix-2.6.1.tar.gz
[
Avatar billede Slettet bruger
25. maj 2009 - 23:12 #4
Mere mystisk..

Jeg har lige prøvet at kopiere indholdet til et nyt dokument, og så virker det efter hensigten.. Hvis jeg kopierer filen er fejlen der stadig.
Der er ingen forskel på mode eller synligt indhold - der er dog forskel i størrelse.

-rw-r--r-- 1 root root    756 May 25 22:49 old.sh
-rw-r--r-- 1 root root    721 May 25 22:48 new.sh

Det er lige meget om jeg bruger kate eller vi til at editere, begge er gemt i utf-8. Filen har været editeret i notepad (windows) og har ligget på en NTFS partition.

Notepad benytter så vidt jeg husker carriage return, men at det ligefrem skulle optræde i en linje, som jeg nu (igen) har "sikret" mig ikke indeholder carriage return i sig lyder lidt langt ude. Og med "sikret" mener jeg at genskrive linje...
echo ${FTP_PATH}\r${VERSION}

Måske jeg en af de følgende dage vil analysere hvilke ekstra characters, der er i filen, men for nu, må jeg "nøjes" med at oprette en ny fil.
Avatar billede Slettet bruger
25. maj 2009 - 23:13 #5
med echo ${FTP_PATH}\r${VERSION} ville jeg illustrere, hvor \r skulle være for at det hele ville give mening - det er ikke sådan, jeg har genskrevet linjen :).
Avatar billede arne_v Ekspert
25. maj 2009 - 23:20 #6
Prøv lige at åbne dem i en hex editor og sammenlign indholdet der.
Avatar billede Slettet bruger
26. maj 2009 - 00:06 #7
Det har jeg prøvet nu (med et noget simplere eksempel).

Virker:
A=a\nB=b\necho $A$B
output: ab

Virker ikke:
A=a\r\nB=b\r\necho $A$B
output: b

Det må næsten være ved assignment A=a\r, så output ($A$B) er a\rb\r - dermed bliver a overskrevet med b. Det er jo lige før, det giver mening det her - bortset fra, hvorfor kate ikke kopierer \r\n, men kun \n over til et nyt dokument.
Avatar billede arne_v Ekspert
26. maj 2009 - 00:15 #8
Linux bruger kun \n ikke \r\n (\r\n er en Windows ting).

Få da gemt den fil i det rigtige format.
Avatar billede Slettet bruger
26. maj 2009 - 00:25 #9
Yes.. Det kom jeg også frem til :).

Du må have tak for hjælpen - læg et svar.

Vh Mathias.
Avatar billede arne_v Ekspert
26. maj 2009 - 00:34 #10
svar

Og hvis det er fordi du foretrækker Windows editorer så kig på NEdit eller JEdit.
Avatar billede Slettet bruger
26. maj 2009 - 00:43 #11
Det er såmænd fordi jeg er i gang med et linux kursus og ikke lige har fået wireless til at virke og derfor har brugt windows til at browse.

Men vil da kikke på de to editorer.

Endnu engang tak for assistancen.

Vh Mathias.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester