【问题标题】:Get variable type in bash在bash中获取变量类型
【发布时间】:2015-07-02 15:31:25
【问题描述】:

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

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

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

无类型变量既是福也是祸。它们在脚本编写中提供了更大的灵活性,并使编写代码行变得更容易(并为您提供足够的绳索来吊死自己!)。然而,它们同样允许细微的错误潜入并鼓励草率的编程习惯。

但我不确定这意味着什么以及真正的优点(和缺点)是什么。

【问题讨论】:

    标签: python bash variables types


    【解决方案1】:

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

    declare -i num
    num=42
    declare -p num
    

    给予:

    declare -i num="42"
    

    但与 Python 或几乎所有现代语言相比,这是一个很差的功能。问题是,在 Bash 之类的东西中,基本类型是文本字符串,如果您需要的只是文件名之类的文本字符串,那就没问题了。但是一旦您开始需要进行繁重的处理,您就需要其他类型。例如,Bash 不支持浮点。您还需要 compound 类型,例如描述具有文件可以具有的所有属性的文件的类。

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

    即便如此,大多数人都同意在 Bash 中几乎不可能实现面向对象,尽管有些人认为它可以在 Korn shell(它具有更强大的功能)中完成。 http://en.wikipedia.org/wiki/Object-oriented_programming

    bash 所具有的功能与它的用途相得益彰 - 简单的处理,快速且易于工作。但是有一个临界点,超过这个临界点,使用这种语言就会变得笨拙、容易出错和缓慢。该临界质量可以是规模之一,即大量数据或复杂性。

    没有简单的分界点,您应该停止使用 Bash 并切换到 Python。只是随着程序变得越来越复杂和庞大,使用 Python 的情况变得越来越强大。

    我应该补充一点,随着时间的推移,shell 脚本很少会变得更小和更简单!

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-27
    • 2016-06-03
    • 2018-07-30
    • 1970-01-01
    • 2011-12-23
    相关资源
    最近更新 更多