shell - Command not found error in Bash variable assignment -
i have script called test.sh:
#!/bin/bash str = "hello world" echo $str when run sh test.sh this:
test.sh: line 2: str: command not found what doing wrong? @ extremely basic/beginners bash scripting tutorials online , how declare variables... i'm not sure i'm doing wrong.
i'm on ubuntu server 9.10. , yes, bash located @ /bin/bash.
you cannot have spaces around '=' sign.
when write:
str = "foo" bash tries run command named str 2 arguments (the strings '=' , 'foo')
when write:
str =foo bash tries run command named str 1 argument (the string '=foo')
when write:
str= foo bash tries run command foo str set empty string in environment.
i'm not sure if helps clarify or if mere obfuscation, note that:
- the first command equivalent to: str "=" "foo",
- the second same str "=foo",
- and last equivalent str="" foo.
the relevant section of sh language spec, section 2.9.1 states:
a "simple command" sequence of optional variable assignments , redirections, in sequence, optionally followed words , redirections, terminated control operator.
in context, word command bash going run.  string  containing = (in position other @ beginning of string) not redirection variable assignment, while string not redirection , not contain = command.  in str = "foo", str not variable assignment.
Comments
Post a Comment