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:
Het gaat fout als ik een script test2.sh aanmaak en de functie importeer:
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!
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!
[ Voor 4% gewijzigd door Q op 17-08-2008 18:28 ]