[bash]Probleem met quotes in variable

Pagina: 1
Acties:

  • BoAC
  • Registratie: Februari 2003
  • Laatst online: 20:41

BoAC

Memento mori

Topicstarter
Ik heb een bash-script waarin ik een aantal keuzes in een dialoog wil laten zien:
code:
1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/bash
PATH=/bin:/usr/bin

TEST="\"test 1\" \"item 1\" \"test 2\" \"item 2\""

# test 1
dialog --menu test 20 30 10 "test 1" "item 1" "test 2" "item 2"

# test 2
dialog --menu test 20 30 10 ${TEST}

echo ${TEST}

Nu is het probleem dat bij '# test 1' er 2 keuzes zijn wat ik ook wil :) :
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        lqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
        x test                       x
        x lqqqqqqqqqqqqqqqqqqqqqqqqk x
        x x     test 1  item 1     x x
        x x     test 2  item 2     x x
        x x                        x x
        x x                        x x
        x x                        x x
        x x                        x x
        x x                        x x
        x x                        x x
        x x                        x x
        x x                        x x
        x mqqqqqqqqqqqqqqqqqqqqqqqqj x
        x                            x
        x                            x
        x                            x
        tqqqqqqqqqqqqqqqqqqqqqqqqqqqqu
        x   <  OK  >  <Cancel>       x
        mqqqqqqqqqqqqqqqqqqqqqqqqqqqqj

Maar bij '# test 2' krijg ik ineens 4 keuzes waarbij in de 2e kolom alle getallen staan:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        lqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
        x test                       x
        x lqqqqqqqqqqqqqqqqqqqqqqqqk x
        x x       "test  1"        x x
        x x       "item  1"        x x
        x x       "test  2"        x x
        x x       "item  2"        x x
        x x                        x x
        x x                        x x
        x x                        x x
        x x                        x x
        x x                        x x
        x x                        x x
        x mqqqqqqqqqqqqqqqqqqqqqqqqj x
        x                            x
        x                            x
        x                            x
        tqqqqqqqqqqqqqqqqqqqqqqqqqqqqu
        x   <  OK  >  <Cancel>       x
        mqqqqqqqqqqqqqqqqqqqqqqqqqqqqj

Terwijl het resultaat van 'echo ${TEST}'
code:
1
"test 1" "item 1" "test 2" "item 2"
is :'(
Wat doe ik nu precies fout?

[ Voor 8% gewijzigd door BoAC op 14-04-2005 08:48 . Reden: Typo :) ]


  • BoAC
  • Registratie: Februari 2003
  • Laatst online: 20:41

BoAC

Memento mori

Topicstarter
Schopke

Ik heb nog gekeken of een array de oplossing zou zijn maar dat wil dus ook niet :'(
Ook het wisselen van ' of " wil niet. Ik zie dus altijd resultaat '# test 2' :?

[ Voor 11% gewijzigd door BoAC op 15-04-2005 09:45 ]


  • thunder7
  • Registratie: Januari 2003
  • Laatst online: 18:08

thunder7

houten vaas/schaal nodig?

BoAC schreef op vrijdag 15 april 2005 @ 09:45:
Schopke

Ik heb nog gekeken of een array de oplossing zou zijn maar dat wil dus ook niet :'(
Ook het wisselen van ' of " wil niet. Ik zie dus altijd resultaat '# test 2' :?
Als je je script uitvoert met sh -x zie je wat er precies gebeurd; mogelijk zie je dan verschil tussen de 2 oproepen van dialog.

hout-nerd - www.hetmooistehout.nl of www.houtenschalen.nl


  • BoAC
  • Registratie: Februari 2003
  • Laatst online: 20:41

BoAC

Memento mori

Topicstarter
Ik zie niets extra's voorbijkomen :?
1e regel in mijn bash-script gewijzigd in #!/bin/bash -x :P

Resultaat bij # Test 1:
code:
1
dialog --menu test 20 30 10 'test 1' 'item 1' 'test 2' 'item 2'


Resultaat bij # Test 2:
code:
1
dialog --menu test 20 30 10 '"test' '1"' '"item' '1"' '"test' '2"' '"item' '2"'

Bash zet er dus zelf extra quotes omheen :(

[ Voor 112% gewijzigd door BoAC op 15-04-2005 10:01 ]


  • BoAC
  • Registratie: Februari 2003
  • Laatst online: 20:41

BoAC

Memento mori

Topicstarter
Heb et nou opgelost door een tijdelijke tmp-file:
code:
1
2
3
4
5
6
7
8
#!/bin/bash
PATH=/bin:/usr/bin

echo "--menu test 20 30 10" > /tmp/params
echo "\"test 1\" \"item 1\" \"test 2\" \"item 2\"" >> /tmp/params

dialog --file /tmp/params
rm /tmp/params

Maar dat is natuurlijk om de 'hete brij' heendraaien en loop ik er de volgende keer weer tegenaan ;)