如果我使用Bash并运行. ./setantenv.sh
,我的项目文件夹中就可以了。
但是在同一个文件夹中,如果我使用ZSH并尝试运行. ./setantenv.sh
,则会产生./setantenv.sh:4: = not found
ZSH在运行所有其他命令时没有任何问题。但它似乎无法识别.
./AnyCommand.sh
#!/bin/bash
OWN_NAME=setantenv.sh
if [ "$0" == "./$OWN_NAME" ]; then
echo * Please call as ". ./$OWN_NAME", not ./$OWN_NAME !!!---
echo * Also please DO NOT set back the executable attribute
echo * On this file. It was cleared on purpose.
chmod -x ./$OWN_NAME
exit
fi
PLATFORM_HOME=`pwd`
export -p PLATFORM_HOME
export -p ANT_OPTS="-Xmx400m -XX:MaxPermSize=128M"
export -p ANT_HOME=$PLATFORM_HOME/apache-ant-1.9.1
chmod +x "$ANT_HOME/bin/ant"
export -p PATH=$ANT_HOME/bin:$PATH
echo Setting ant home to: $ANT_HOME
ant -version
任何帮助?
答案 0 :(得分:1)
<a href="http://example.com" tabindex="3">Link</a>
<input type="text" tabindex="2">
<select tabindex="5">
<option>Option A</option>
<option>Option B</option>
<option>Option C</option>
</select>
<textarea tabindex="4">Hello world</textarea>
<button tabindex="1" id="Btn">Button</button>
<button tabindex="1" id="BtnRes">restore tabindex</button>
或
if [ "$0" "==" "./$OWN_NAME" ]; then
if [ "$0" = "./$OWN_NAME" ]; then
时重写如此。
答案 1 :(得分:1)
this是test
及其别名[
的最新POSIX规范。如您所见,整个页面中没有==
。
freebsd test(1)手册页说:
COMPATIBILITY
For compatibility with some other implementations, the = primary
can be substituted with == with the same meaning.
但是zsh内置[
:
% for sh in sh bash mksh zsh; do $sh -c "printf '%-5s- ' $sh; which '['"; done
sh - /bin/[
bash - /bin/[
mksh - /bin/[
zsh - [: shell built-in command
...而zsh的版本没有==
。来自 zshbuiltins(1)(只有第二个概要行的外括号是实际语法,其余为*BNF):
test [ arg ... ]
[ [ arg ... ] ]
Like the system version of test. Added for compatibility; use
conditional expressions instead (see the section `Conditional
Expressions'). The main differences between the conditional
expression syntax and the test and [ builtins are: these
commands are not handled syntactically, so for example an empty
variable expansion may cause an argument to be omitted; syntax
errors cause status 2 to be returned instead of a shell error;
and arithmetic operators expect integer arguments rather than
arithmetic expressions.
The command attempts to implement POSIX and its extensions where
these are specified. Unfortunately there are intrinsic
ambiguities in the syntax; in particular there is no distinction
between test operators and strings that resemble them. The
standard attempts to resolve these for small numbers of
arguments (up to four); for five or more arguments compatibility
cannot be relied on. Users are urged wherever possible to use
the `[[' test syntax which does not have these ambiguities.
btw,您收到的错误消息为= not found
,因为zsh使用前导=
进行文件名扩展。来自 zshexpn(1):
'=' expansion
If a word begins with an unquoted '=' and the EQUALS option is set, the
remainder of the word is taken as the name of a command. If a command
exists by that name, the word is replaced by the full pathname of the
command.
显然,=
中的任何地方都没有名为$PATH
的命令。 :)
% echo =ls
/bin/ls
% echo =fubar
zsh: fubar not found
% echo ==
zsh: = not found