gpt4 book ai didi

linux - 为什么 "let"在 Ubuntu 上不能与 "sh myscript"一起使用,而与 "./myscript"一起使用?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:22:13 26 4
gpt4 key购买 nike

sh./ 模式下运行以下脚本在 Ubuntu 上得到不同的结果

#!/bin/bash
x=80
z=90
let "a=$x+$z"
echo $a

结果:

sh mode 给我“空白”输出,而 ./mode 产生 170。

有什么解释吗?

最佳答案

通过调用方法选择 Shell

./mode 支持 shebang,它指定使用 bash 调用您的脚本。相比之下,sh 模式 显式使用 sh,忽略了 shebang。 (.mode 根本不运行新的 shell,而是在您已经交互使用的同一 shell 中执行脚本中的命令)。


为什么 shell 选择很重要

let 是一个 bash 扩展,用于与 pre-POSIX shell 兼容。

/bin/sh 由 ash 衍生物实现的平台(例如 Ubuntu)上,几乎没有 POSIX sh 标准中未指定的功能可用。

要以与所有 POSIX 兼容的 shell 兼容的方式执行算术运算(来自 POSIX sh 标准的最初 1992 年发布),请使用以下语法:

a=$(( x + z ))

关于linux - 为什么 "let"在 Ubuntu 上不能与 "sh myscript"一起使用,而与 "./myscript"一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46141964/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com