【问题标题】:Difference between source, zsh, "." and directly shell script calling源、zsh、“。”之间的区别并直接调用shell脚本
【发布时间】:2016-10-16 00:21:49
【问题描述】:

我有一个非常简单的脚本(for_loop4.sh),如下所示。

# !/bin/zsh
#

for (( i = 0; i < 3; i++ ))
do
    echo $i;
done

我的 shell 使用的是 zsh 5.0.7。

当使用 source、zsh 和 .命令, 它按预期工作。但是,当直接调用这个脚本时, 它失败并显示消息“循环变量错误”。

为什么会这样? 有什么区别?

$ source ./for_loop4.sh
0
1
2

$ zsh ./for_loop4.sh
0
1
2

$ . ./for_loop4.sh
0
1
2

$ ./for_loop4.sh
./for_loop4.sh: 4: ./for_loop4.sh: Syntax error: Bad for loop variable

【问题讨论】:

  • for_loop4.sh 上是否设置了执行位?如果你 chmod +x ./for_loop.sh 系统是否有相同的结果?
  • 我在运行 zsh 5.0.8 的 Mac 上得到不同的结果。

标签: linux shell zsh dot-source


【解决方案1】:

你的第一行是错误的:

# !/bin/zsh

应该是:

#!/bin/zsh

【讨论】:

  • 谢谢!!这解决了我的问题。
  • 为了完整起见:错误行的结果是使用了默认 shell - /bin/sh。在这种情况下,/bin/sh 似乎不是zshbash 的链接/副本(我猜是dash)并且不支持这种类型的for-loop。
【解决方案2】:

确保您的 zsh 安装在哪里。可以安装到/usr/目录下。
您可以输入,

$哪个zsh

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-08
    • 2012-07-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多