Bug 450172
| Summary: | Gawk 3.1.3 while bug | ||
|---|---|---|---|
| Product: | Red Hat Enterprise Linux 4 | Reporter: | Christopher <christopher.geen> |
| Component: | gawk | Assignee: | Jan Zeleny <jzeleny> |
| Status: | CLOSED NOTABUG | QA Contact: | Brock Organ <borgan> |
| Severity: | medium | Docs Contact: | |
| Priority: | low | ||
| Version: | 4.6 | CC: | rchidamb |
| Target Milestone: | rc | ||
| Target Release: | --- | ||
| Hardware: | All | ||
| OS: | Linux | ||
| Whiteboard: | |||
| Fixed In Version: | Doc Type: | Bug Fix | |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | 2010-03-05 16:47:57 UTC | Type: | --- |
| Regression: | --- | Mount Type: | --- |
| Documentation: | --- | CRM: | |
| Verified Versions: | Category: | --- | |
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
| Cloudforms Team: | --- | Target Upstream Version: | |
| Embargoed: | |||
Use parentheses around the string concatenation to get this working. Not using parentheses makes the expression ambiguous. Reference: htte://www.gnu.org/manual/gawk/html_node/Getline_002fPipe.html#Getline_002fPipe Here is the right way to do it with the original script -
#!/usr/bin/gawk -f
# test.gawk
BEGIN {
comm="-al";
while(("/bin/ls "comm) | getline >0){
print
}
}
Notice the parentheses in the expression in the "while" condition.
- Didar
Since this has been already solved in previous comments, I'm closing this as NOTABUG. |
Description of problem: In Gawk version 3.1.3 strings can not be expanded within a while loop. Version-Release number of selected component (if applicable): 3.1.3 How reproducible: Always Steps to Reproduce: 1. Create a simple awk script. For example: #!/usr/bin/gawk -f # test.gawk BEGIN { comm="-al"; while("/bin/ls "comm | getline >0){ print } } 2. Run the script. ./test.gawk Actual results: garbage Expected results: listing of what's in my run directory Additional info: This works for any string in the while loop with variables. For example comm="w"; while( "ps -e" comm "f" | getline >0){ also does not work. An easy fix is to resolve the string before the loop, for example: joe="ps -e" comm "f" while( joe | getline >0){ This works fine in RedHat Enterprise 3.8 with Gawk 3.1.1 -Chris