TL;DR;什么是shell脚本?它是一种编程语言/我们在shell脚本中是否使用了一种编程语言?
免责声明:有点离题
所以巴什代表伯恩-再来一次贝壳。一个(Unix) Shell是一个命令行用户界面,或者可以称之为解释器(?)
因此,我正在填写一个新工作的申请,你会被要求有不同的编程语言的经验,然后在下面的其他经验框-我开始输入python 2.7,powershell,巴斯.等等!bash不是一种编程语言-它是一个可以执行shell脚本的控制台.所以..。呃..。天哪,我不知道!
发布于 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交互,但是,通过串行硬件连接或网络会话直接操作在服务器系统中是常见的。
发布于 2015-02-24 10:55:18
Bash无疑是一种编程语言,专门用于unix/linux脚本编写。这是图灵完成,所以你可以(理论上)写任何程序的巴什。
发布于 2020-09-05 01:14:47
对于编程语言的真正含义并没有完美的定义,但您可以说,每一种语言,即图灵-完全,都是一种编程语言,从理论上讲,每一种可想象的程序都可以用它编写(即使这样做可能会很尴尬,即使运行起来会非常缓慢)。Bash是图灵完整的,所以没有什么是不能用Bash编程的。
一般来说,Bash,shell的问题是,它缺乏大量的基本功能,因此,在为它们编写脚本时,您通常会调用外部程序来执行所需的工作。但那只是走捷径。例如,如果需要shell中的浮点功能,实际上可以实现它。它将有可能编写一个完整的IEEE 754标准实现的一切,是图灵-完整的。在实践中,这样的实现将是巨大的,需要大量内存,而且速度慢得可怕,因此更好地调用bc。但是,即使完全在bash中实现bc也是可能的。
下面是我曾经写过的bash脚本,它将Mandelbrot设置为控制台。你最好准备好喝杯咖啡,如果你想看最终结果,那将是一个漫长的夜晚:
#!/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对于那些不能等那么久的人来说,结果应该是这样的:
*
*
*
*
*
***
*****
*****
***
*
*********
*************
***************
*********************
*********************
*******************
*******************
*******************
*******************
***********************
*******************
*******************
*********************
*******************
*******************
*****************
***************
*************
*********
*
***************
***********************
* ************************* *
*****************************
* ******************************* *
*********************************
***********************************
***************************************
*** ***************************************** ***
*************************************************
***********************************************
*********************************************
*********************************************
***********************************************
***********************************************
***************************************************
*************************************************
*************************************************
***************************************************
***************************************************
* *************************************************** *
***** *************************************************** *****
****** *************************************************** ******
******* *************************************************** *******
***********************************************************************
********* *************************************************** *********
****** *************************************************** ******
***** *************************************************** *****
***************************************************
***************************************************
***************************************************
***************************************************
*************************************************
*************************************************
***************************************************
***********************************************
***********************************************
*******************************************
*****************************************
*********************************************
**** ****************** ****************** ****
*** **************** **************** ***
* ************** ************** *
*********** ***********
** ***** ***** **
* * * * 它应该像这样的东西被90度旋转(有点挤压):

https://stackoverflow.com/questions/28693737
复制相似问题