I have a function printing a number

myFunc() {
    echo 11

Now I want to use the number in expression in c style for-loop:

for (( i=1; i<=$(myFunc); i++ )); do
    echo "$i"

Zsh gave me

test.sh:5: parse error near `i++ '
test.sh:6: parse error near `i<=$(myFunc); i++ ))...'

while Bash prints 1 through 11 as expected. What happened to Zsh? I expect it to be compatible with Bash on this feature.

In case it matters, my environment:

  • OS X 10.11.5
  • zsh 5.0.8 (x86_64-apple-darwin15.0)
  • GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin15)


This may be a bug, and may have been fixed in latest version. I will delete this question as soon as I verify this.

  • A general pondering: Why would you write code for one language and expect it to be understood by the interpreter of another? Just make the script run in bash. – Kusalananda Jul 1 '16 at 8:38
  • @Kusalananda How about completion? I run those script with source filename. It would take a lot of time to translate it to Zsh. – Franklin Yu Jul 1 '16 at 8:56
  • @jimmij So it seems that I need to update my Zsh? I will try the latest version. – Franklin Yu Jul 1 '16 at 8:56
  • 2
    @Kusalananda I am already using Oh-My-Zsh, but I forgot that it involves completion. I found the plugin I need. Thank you very much! I will delete this question as soon as I verify that it is a bug already fixed in latest version. – Franklin Yu Jul 1 '16 at 9:17
  • 1
    Don't delete it! That would prevent others to find the issue. Instead, answer it yourself and in two days time (required waiting period), accept your own answer. – Kusalananda Jul 1 '16 at 9:19

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.