Environment
Privileged Account Manager 3.2
pcksh shell RUSH v1.2 (based upon pdksh-5.2.14-31)
pcksh shell RUSH v1.2 (based upon pdksh-5.2.14-31)
Situation
Problem with "for" loop within pcksh shell
pcksh shell fails to execute a particular for loop structure while executing others fine:
# for((i=1;i<=10;i+=2)); do echo "Welcome $i"; done
pcksh: syntax error: `((' unexpected
pcksh shell fails to execute a particular for loop structure while executing others fine:
# for((i=1;i<=10;i+=2)); do echo "Welcome $i"; done
pcksh: syntax error: `((' unexpected
Resolution
At the time of writing this document, the above example "for" loop syntax is unsupported in the pcksh shell, as it is also unsupported in the base pdksh-5.2 shell. This has been reported to Engineering for enhancement consideration. For more information on the progress of this enhancement, please contact Customer Care.
Alternative loop structures are certainly supported. Please refer to the pcksh man pages for supported and valid syntax. For example, the command mentioned in the Situation section above could be rewritten with the following while loop:
i=0; while [ $i -lt 10 ]; do echo "Welcome $i"; i=$(expr $i + 1); done
Alternative loop structures are certainly supported. Please refer to the pcksh man pages for supported and valid syntax. For example, the command mentioned in the Situation section above could be rewritten with the following while loop:
i=0; while [ $i -lt 10 ]; do echo "Welcome $i"; i=$(expr $i + 1); done
Cause
Unsupported "for" loop syntax in use based upon underlying pdksh shell.
Status
Reported to EngineeringAdditional Information
The following will help determine the version of pcksh shell:
# echo $PCKSH_VERSION
@(#)RUSH v1.2 $Date: 2007-09-27 10:42:20 +0100 (Thu, 27 Sep 2007) $ (based up pdksh-5.2.14-31)
The following will help determine what shell is in currently in use:
# ps -p $$
PID TTY TIME CMD
530 pts/1 00:00:00 pcksh
# echo $0
pcksh
# echo $PCKSH_VERSION
@(#)RUSH v1.2 $Date: 2007-09-27 10:42:20 +0100 (Thu, 27 Sep 2007) $ (based up pdksh-5.2.14-31)
The following will help determine what shell is in currently in use:
# ps -p $$
PID TTY TIME CMD
530 pts/1 00:00:00 pcksh
# echo $0
pcksh