下面两行完全等价吗?如果不是有什么区别?我见过很多 shell 脚本都使用数字 1,只是想知道它与数字 2 相比能提供什么。

  1. typeset TARGET="${XMS_HOME}/common/jxb/config/${RUNGROUP}.${ENV}.properties"
  2. TARGET="${XMS_HOME}/common/jxb/config/${RUNGROUP}.${ENV}.properties"
有帮助吗?

解决方案

typeset 将创建一个局部变量(不会“泄漏”的变量)。这在函数中很有用,但我也看到它在 shell 脚本的顶层使用。

a=0
function x {
    typeset a=1
}
x
echo $a
function y {
    a=2
}
y
echo $a

将打印

0
2

您还可以使用 typeset 创建数组和整数。

[编辑] 添加 function 关键字,因为某些 shell 需要它。如果它冒犯了您的 shell,请将其删除,但它应该适用于大多数版本。

其他提示

由于 shell 脚本是一种松散类型语言(其中变量没有数据类型),我们可以使用排版来设置特定变量以仅采用类似数据类型的值。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top