[BASH] Escaping mislukt bij gebruik van functies

Pagina: 1
Acties:

  • Q
  • Registratie: November 1999
  • Nu online

Q

Au Contraire Mon Capitan!

Topicstarter
Werking

Een script voert een commando uit, zoals "ls -al | grep bla" en geeft mij de output terug. Het voorbeeld is an sich niet nuttig, maar het is ter illustratie van mijn probleem.

Probleem

Voorbeeld script test.sh:

code:
1
2
3
4
5
6
7
8
9
10
11
#!/bin/bash

function test {
 
  CMD="$1"
  
  RES=`$CMD 2>&1`
  echo $RES
}

test "ls -al | grep bla"


Het gaat fout als ik een script test2.sh aanmaak en de functie importeer:

code:
1
2
3
4
5
#!bin/bash

. test.sh

test "ls -al | grep bla"


Voorbeeld van output is: "ls: |: No such file or directory ls: grep: No such file or directory.

Conclusie
Als ik een functie binnen een bestand aanroep gaat het goed. Gebruik ik de functie in een ander bestand gaat het mis.

Het lijkt er op alsof bij het gebruik van de geinclude functie tekens als | (pipe) worden geescaped terwijl ze geinterpreteerd moeten worden.

Wat doe ik fout?

Edit:

antwoord

Gebruik de "eval" build-in van bash. :(

Bedankt! :o

[ Voor 4% gewijzigd door Q op 17-08-2008 18:28 ]