Portál AbcLinuxu, 12. července 2025 09:17
#!/bin/bash funkcia() { echo $# } # akoze vstupy a="aaa aaa" b="bbb bbb" args="$a $b" funkcia "$args" funkcia $args args="\"$a\" \"$b\"" funkcia "$args" funkcia $argsVystup je:
1 4 1 4Ja chcem, aby bol vystup 2.
funkcia "$a" "$b"Jinak mě napadá jedině
args="\"$a\" \"$b\"" eval funkcia $argscož bych asi nedoporučoval (na takovou blbost je to zbytečný).
funkcia "$a" "$b"
nie je rieseniem, pretoze ja dopredu neviem, kolko mi pride tych vstupov. Povedzme, ze mam skript, ktory nejaky typ parametra akceptuje viackrat (./skript -c "aaa bbb" -x 2 -c "ccc ddd" -c "eee fff"
). Vo vnutri tohoto skriptu chcem zavolat funkciu a ako argumenty jej chcem dat vsetky parametre typu c. Takze chcem zavolat funkcia "aaa bbb" "ccc ddd" "eee fff"
. A nevedel som ako to zavolat, aby funkcii prisli 3 dvojslovne argumenty a nie 6 jednoslovnych, pripadne 6 argumentov tvaru:
"aaa bbb" "ccc ddd" "eee fff"Kde znaky "" neodfiltruje bash, ale stali sa sucastou parametrov. No, to eval funguje, tak to dalej neriesim. Este som, po tejto inspiracii prisiel na dalsiu moznost, ideovo rovnaku:
args="${a// /\ } ${b// /\ }" eval funkcia $args
prikaz "$Promenna"A vůbec, ten tvůj podaný příklad je pěkně na houby..
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.