在bash中获取变量类型

2024-04-23 12:08:35 发布

您现在位置:Python中文网/ 问答频道 /正文

在Python中,我可以通过以下方式获取变量类型:

>>> i = 123
>>> type(i)
<type 'int'>

我在this page上看到bash中没有变量类型。给出的解释是:

Untyped variables are both a blessing and a curse. They permit more flexibility in scripting and make it easier to grind out lines of code (and give you enough rope to hang yourself!). However, they likewise permit subtle errors to creep in and encourage sloppy programming habits.

但我不知道这意味着什么,真正的优点(和缺点)是什么。


Tags: andtoinbash类型type方式page
1条回答
网友
1楼 · 发布于 2024-04-23 12:08:35

Bash没有与Python相同的类型(尽管我认为Python有类而不是类型)。但是bash变量确实有属性,这些属性主要是通过declare给出的,但是属性的范围相当小。可以使用declare -p查找属性,例如,declare -i创建一个整数:

declare -i num
num=42
declare -p num

给出:

declare -i num="42"

但与Python或几乎任何现代语言相比,这是一个糟糕的特性。问题是,在Bash之类的东西中,基本类型是文本字符串,如果您只需要文件名之类的东西的文本字符串,那就可以了。但一旦你开始需要做繁重的处理,你需要其他类型。例如,Bash不支持浮点。您还需要复合类型,比如一个描述文件的类,其中包含文件可以具有的所有属性。

Bash 4确实有关联数组declare -A),类似于Python字典,它极大地扩展了功能。

尽管如此,大多数人还是认为在Bash中对象定向几乎是不可能的,尽管有些人认为可以在Korn shell中实现(kornshell具有更强大的功能)。http://en.wikipedia.org/wiki/Object-oriented_programming

bash所拥有的一切对于它的目的来说都是很好的——简单的处理过程,既快速又容易工作。但是有一个临界质量,超过这个临界质量,使用这样的语言就会变得笨拙、容易出错和缓慢。临界质量可以是一个尺度,即大量数据或复杂性。

没有一个简单的截止点可以让您停止使用Bash并切换到Python。只是随着程序变得越来越复杂和庞大,使用Python的理由也越来越强。

我要补充的是,shell脚本很少随着时间的推移变得更小、更复杂!

相关问题 更多 >