在ksh中使用typeset与简单设置变量之间有什么区别吗?

时间:2009-06-22 15:33:10

标签: shell ksh

以下2行完全相同吗?如果不是有什么区别?我已经看到很多shell脚本使用的是1号,只是想知道它与2号相比给你的东西。

  1. typeset TARGET="${XMS_HOME}/common/jxb/config/${RUNGROUP}.${ENV}.properties"
  2. TARGET="${XMS_HOME}/common/jxb/config/${RUNGROUP}.${ENV}.properties"

2 个答案:

答案 0 :(得分:4)

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,请删除它,但它应该适用于大多数版本。

答案 1 :(得分:0)

由于shell脚本是一种松散类型的语言(变量不具有datytype),我们可以使用typeset来设置一个特定的变量,只采用类似的数据类型。