首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >bash是一种编程语言吗?

bash是一种编程语言吗?
EN

Stack Overflow用户
提问于 2015-02-24 10:47:41
回答 4查看 88.5K关注 0票数 79

TL;DR;什么是shell脚本?它是一种编程语言/我们在shell脚本中是否使用了一种编程语言?

免责声明:有点离题

所以巴什代表伯恩-再来一次贝壳。一个(Unix) Shell是一个命令行用户界面,或者可以称之为解释器(?)

因此,我正在填写一个新工作的申请,你会被要求有不同的编程语言的经验,然后在下面的其他经验框-我开始输入python 2.7,powershell,巴斯.等等!bash不是一种编程语言-它是一个可以执行shell脚本的控制台.所以..。呃..。天哪,我不知道!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-02-24 10:51:32

我们可以说,它是一种编程语言。

根据man bash的说法,Bash是一种“与sh兼容的命令语言”。然后,我们可以说“命令语言”是“用户通过它与操作系统或应用程序进行通信的一种编程语言”。

来自man bash

描述 Bash是一种与sh兼容的命令语言解释器,它执行从标准输入或文件中读取的命令。Bash还包含了Korn和C shell (ksh和csh)中的有用特性。

http://www.gnu.org/software/bash/

Bash是GNU项目的外壳。巴什是伯恩再次SHell。Bash是一个sh兼容的shell,它结合了Korn (ksh)和csh (csh)的有用特性。它的目的是符合IEEEPOSIXP1003.2/ISO 9945.2外壳和工具标准。它为编程和交互使用提供了与sh相比的功能改进。此外,大多数sh脚本可以在不修改的情况下由Bash运行。

UNIX外壳是..。

Unix是为Unix操作系统和类Unix系统提供传统用户界面的命令行解释器或shell。用户通过将命令作为文本输入命令行解释器来执行,或者通过创建一个或多个此类命令的文本脚本来指导计算机的操作。用户通常使用终端仿真器与Unix shell交互,但是,通过串行硬件连接或网络会话直接操作在服务器系统中是常见的。

票数 79
EN

Stack Overflow用户

发布于 2015-02-24 10:55:18

Bash无疑是一种编程语言,专门用于unix/linux脚本编写。这是图灵完成,所以你可以(理论上)写任何程序的巴什。

票数 26
EN

Stack Overflow用户

发布于 2020-09-05 01:14:47

对于编程语言的真正含义并没有完美的定义,但您可以说,每一种语言,即图灵-完全,都是一种编程语言,从理论上讲,每一种可想象的程序都可以用它编写(即使这样做可能会很尴尬,即使运行起来会非常缓慢)。Bash是图灵完整的,所以没有什么是不能用Bash编程的。

一般来说,Bash,shell的问题是,它缺乏大量的基本功能,因此,在为它们编写脚本时,您通常会调用外部程序来执行所需的工作。但那只是走捷径。例如,如果需要shell中的浮点功能,实际上可以实现它。它将有可能编写一个完整的IEEE 754标准实现的一切,是图灵-完整的。在实践中,这样的实现将是巨大的,需要大量内存,而且速度慢得可怕,因此更好地调用bc。但是,即使完全在bash中实现bc也是可能的。

下面是我曾经写过的bash脚本,它将Mandelbrot设置为控制台。你最好准备好喝杯咖啡,如果你想看最终结果,那将是一个漫长的夜晚:

代码语言:javascript
复制
#!/bin/bash

BAILOUT=16
MAX_ITERATIONS=1000

function iterate {
    # $1 is x
    # $2 is y
    local zi=0
    local zr=0
    local i=0

    local cr
    cr=$(printf "%s\n" "scale=16; $2 - 0.5" | bc)

    while true
    do
        local temp
        local zr2
        local zi2
        i=$((i + 1))
        zr2=$(printf "%s\n" "scale=16; ($zr * $zr) - ($zi * $zi) + $cr" | bc)
        zi2=$(printf "%s\n" "scale=16; (($zr * $zi) * 2) + $1" | bc)
        temp=$(printf "%s\n" "(($zi * $zi) + ($zr * $zr)) > $BAILOUT" | bc)

        if ((temp == 1))
        then
            return "$i"
        fi

        if ((i > MAX_ITERATIONS))
        then
            return 0
        fi

        zr="$zr2"
        zi="$zi2"
    done
}

function mandelbrot {
    local y
    for ((y = -39; y < 39; y++))
    do
        printf "\n"
        local x
        for ((x = -39; x < 39; x++))
        do
            local xi
            local yi
            local ires
            xi=$(printf "%s\n" "scale=16; $x / 40.0" | bc)
            yi=$(printf "%s\n" "scale=16; $y / 40.0" | bc)
            iterate "$xi" "$yi"
            ires=$?

            if ((ires == 0))
            then
                printf "*"
            else
                printf " "
            fi
        done
    done
    printf "\n"
}

mandelbrot

对于那些不能等那么久的人来说,结果应该是这样的:

代码语言:javascript
复制
                                       *                                      
                                       *                                      
                                       *                                      
                                       *                                      
                                       *                                      
                                      ***                                     
                                     *****                                    
                                     *****                                    
                                      ***                                     
                                       *                                      
                                   *********                                  
                                 *************                                
                                ***************                               
                             *********************                            
                             *********************                            
                              *******************                             
                              *******************                             
                              *******************                             
                              *******************                             
                            ***********************                           
                              *******************                             
                              *******************                             
                             *********************                            
                              *******************                             
                              *******************                             
                               *****************                              
                                ***************                               
                                 *************                                
                                   *********                                  
                                       *                                      
                                ***************                               
                            ***********************                           
                         * ************************* *                        
                         *****************************                        
                      * ******************************* *                     
                       *********************************                      
                      ***********************************                     
                    ***************************************                   
               *** ***************************************** ***              
               *************************************************              
                ***********************************************               
                 *********************************************                
                 *********************************************                
                ***********************************************               
                ***********************************************               
              ***************************************************             
               *************************************************              
               *************************************************              
              ***************************************************             
              ***************************************************             
         *    ***************************************************    *        
       *****  ***************************************************  *****      
       ****** *************************************************** ******      
      ******* *************************************************** *******     
    ***********************************************************************   
    ********* *************************************************** *********   
       ****** *************************************************** ******      
       *****  ***************************************************  *****      
              ***************************************************             
              ***************************************************             
              ***************************************************             
              ***************************************************             
               *************************************************              
               *************************************************              
              ***************************************************             
                ***********************************************               
                ***********************************************               
                  *******************************************                 
                   *****************************************                  
                 *********************************************                
                **** ****************** ****************** ****               
                 ***  ****************   ****************  ***                
                  *    **************     **************    *                 
                         ***********       ***********                        
                         **  *****           *****  **                        
                          *   *                 *   *      

它应该像这样的东西被90度旋转(有点挤压):

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28693737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档