【Linux】Bash脚本

1.1 变量类型

几乎所有的编程语言都有变量的概念,Bash当然也不例外。说道变量就少不了说一说类型。但与其他语言不同的是Bash属于无类型语言,如果强要说一种类型,可以认为都是字符串。说到这里,你可能会说,Bash里面也有整数类型吧,好像有整数的运算。但其是通过一些运算符,表达式或者命令将字符串视作整数处理的,其本质还是字符串。

1.2 声明变量

Bash中的变量和其他脚本语言一样,都是无需声明,直接拿来用的。所以变量的第一次出现都是伴随着初始化的。

1.3 取用变量

变量前加一个 $ 符号。称作dollar符,就是美元符号。这是最基本的一种取用方式,其他的方式以后再表。

12
a="hello world"  echo $a

终端会打印出 hello world。当然你可以把变量和常量字符串放到一起来打印,比如

12
boy=Jellyecho "$boy:hello world!"

结果为 Jelly:hello world!

1.4 初始化/赋值变量

Bash中的变量由于无需声明,所以第一次出现都会伴随初始化。Bash中的变初始化(或赋值)方式共有三种:直接赋值、读取输入和命令替换。

1.4.1 直接赋值

直接赋值就是使用一个等于号了,这在其他编程语言里也很常见,比如:

1234
a=123b=abcc=‘123’d=“hello world”
注意空格

需要注意的是等号左右不能有空格!!!比如如果出现a = 22,执行该.sh时则会直接报错

关于引号

其次要理解的是,由于刚才说过的所有变量都可视作字符串,所以其实a=123和a=“123”没什么不同。不过如果你的变量包含空格就一定需要用引号来包裹了。

单引号和双引号一般情况下作用相同,除了某些特殊情况:

1234
a="I'm Jelly"b='Jelly:"Hi"'echo $aecho $b

当字符串中含有单引号那么外面要用双引号,反之亦然。

1.4.2 读取输入

读取终端的输入给变量赋值,就是使用read命令。read和echo一样都是内嵌命令。直接看代码:

123
echo -n "Please Input your name:"read nameecho "Hi,$name,welcome to uncle Jelly's cabin!"

或者可以使用read命令的 -p 选项来简化上述代码:

12
read -p "Please Input your name:" nameecho "$name,welcome to uncle jelly's cabin!"

1.4.3 命令替换

这是非常实用的一种初始化或赋值的方式。利用其他命令的输出来给一个变量赋值。这需要用到反引用符号(“`”)

1234
dir=`pwd`tim=`date`echo "我在$dir目录下"echo "现在时间是$time"

这里调用了pwd和date两个命令。你可以直接在终端键入这两个命令,看看打印结果。反引号就是把``中命令中的输出赋值给变量。

注意

使用反引号进行命令替换赋值,且直接打印该变量时,变量中的n换行符会被替换成空格:

12345
ps1=`ps`echo $ps1

ps2=`ps`echo "$ps2"

除此之外,也可以通过$()的方式进行命令替换赋值:

1234
dir=$(dir)tim=$(date)echo "$dir"echo "$tim"

Note:
  • 修改shell脚本权限或执行shell脚本的时候,在shell脚本名前加./,即当前目录下查找,否则会在PATH下开始查找,避免不必要的麻烦

  • 当shell脚本执行过程中发现shell脚本存在错误时(比如使用了一个未定义的变量),该错误代码会被跳过,并且继续执行错误代码之后的所有代码(而不是立刻执行当前shell脚本的执行)

2 数值计算

前面提到,Bash把所有变量都视为字符串。比如,a=1+2,$a并不等于3,而是等于字符串1+2。因此Bash中的数学计算并不如其他语言那样简便。

运算符[]

为了解决这个问题,我们可以使用运算符[]

在中括号中引用变量可以直接使用变量名,也可以使用$加变量名

1234567891011
a=2b=3

c1=$[$a+4]echo $c1

c2=$[a+5]echo $c2

c3=$[$a+$b]echo $c3

expr及其反引用

1234567
a=2b=3expr $a + $bexpr $a - $bexpr $a * $bexpr $a / $bexpr $a % $b

需要注意的是:

  • 操作符和操作数之间一定要有空格间隔
  • 操作数(即变量)前必须有$符
  • 乘号*,要用反斜杠进行转义
  • 该命令会将计算结果打印到标准输出
  • 仅支持整数运算
  • 也可以直接使用数字的字面值

将expr的计算结果赋值给一个变量呢:

1
c=`expr $a + $b`

Reference

原文:大专栏  【Linux】Bash脚本

原文地址:https://www.cnblogs.com/peterchan1/p/11640768.html

时间: 2024-10-29 04:48:11

【Linux】Bash脚本的相关文章

Linux Bash脚本基本语法知识

写在前面:如果此文有幸被某位朋友看见并发现有错的地方,希望批评指正.如有不明白的地方,愿可一起探讨. 前提:读者能够基本使用一款文本编辑器以及了解文件的权限概念. 准备工作 在/home目录创建script文件用于保存所有的脚本程序: # mkdir /home/script # cd /home/script/ Bash脚本的基本输入输出 第一个bash脚本: # vim ./hello-world.sh 说明: "#!"是一个约定标记,它告诉系统这个脚本需要什么解释器来执行 作为可

Linux Bash脚本编程语言中的美学与哲学

我承认,我再一次地当了标题党.但是不可否认,这一定是一篇精华随笔.在这一篇中,我将探讨Bash脚本语言中的美学与哲学. 这不是一篇Bash脚本编程的教程,但是却能让人更加深入地了解Bash脚本编程,更加快速地学习Bash脚本编程. 阅读这篇随笔,不需要你有Bash编程的经验,但一定要和我一样热衷于探索各种编程语言的本质,感悟它们的魅力. 其实早就想写关于Bash的东西了. 我们平时喜欢对编程语言进行分类,比如面向过程的编程语言.面向对象的编程语言.函数式编程语言等等.在我心中,我认为Bash就是

linux Bash脚本基础符号总结 (一)

1.初识Bash 首先编译一个简单的bash vim hello.sh 使用vim编辑hello.sh ,输入如下代码并保存: #!/bin/bash echo hello word 运行Bash脚本的方式: # 使用shell来执行 $ sh hello.sh # 使用bash来执行 $ bash hello.sh 还可以让脚本本身就具有可执行权限,通过chmod命令可以修改: # 赋予脚本的所有者该执行权限,允许该用户执行该脚本 $ chmod u+x hello.sh # 执行命令,这将使

Linux Bash 脚本:自定义延迟代码块(裸数据保存方案)

结合 alias 和 read 用法,可以保存一些将要延迟运行的脚本,或者裸数据(字符串不被扩展)到一个变量中,以备后用. $ alias BEGIN='read -d "" $1 <<"END"' $ BEGIN block1 > ls -la > END $ eval $block1 total 10 drwxr-xr-x 1 Xiaoqian Administ 4096 Nov 5 22:42 ./ drwxr-xr-x 12 Xiao

Linux Bash 脚本:自己定义延迟代码块(裸数据保存方案)

结合 alias 和 read 使用方法.能够保存一些将要延迟执行的脚本,或者裸数据(字符串不被扩展)到一个变量中.以备后用. $ alias BEGIN='read -d "" $1 <<"END"' $ BEGIN block1 > ls -la > END $ eval $block1 total 10 drwxr-xr-x 1 Xiaoqian Administ 4096 Nov 5 22:42 ./ drwxr-xr-x 12 Xi

用于监视Linux上的内存使用情况的Bash脚本

用于监视Linux上的内存使用情况的Bash脚本 2019-06-17 11:32:45作者:戴进稿源:云网牛站 在本文中,我们添加了两个shell脚本来监视Linux操作系统上的内存利用率,即用于监视Linux上的内存使用情况的Bash脚本,当系统达到给定阈值时,它将触发并发送电子邮件给你.可以参考脚本在实践中的应用:用脚本的方法解决搜狗拼音占用大量内存的问题. 方法一.Linux Bash脚本监视内存利用率并发送电子邮件 如果只想在系统达到给定阈值时通过邮件获取当前内存利用率百分比,请使用以

用Bash脚本将Linux普通用户添加为系统管理员

将Linux普通用户添加为系统管理员在Gnome或KDE这样强大与完善的桌面环境下是非常简单的事情,一般来说在用户设置的对话框里就直接有相应选项.不过,出于简洁与高效的风格,自己目前并未使用这些高端但吃内存的“重量级”桌面环境,使用的就是最基本的X视窗+Sawfish窗口管理器的组合.在这样的环境下进行用户管理,都是通过命令行来完成.如,使用useradd命令添加新用户.不过,由useradd命令添加的用户只具有普通使用者的权限,不具备系统管理的能力.这样一来,就给一些常见的操作带来不便,如,使

Linux基础之bash脚本编程初级-逻辑运算与测试

引言 前面介绍了bash编程的基础变量与算术表达式,本文介绍在脚本中的进阶知识:测试 在bash中测试大体分两部分:条件测试.组合测试. 而条件测试有分:数值测试.字符串测试.文件测试. 组合测试则有两种表达方式.具体是什么表达方式在文章中会有具体展示. 本文实验环境为CentOS7.2 Linux中为什么要学习测试(判断)? 当我第一次学习这部分内容时,觉得好难,好不爽.可是这又是想要继续学习Linux必须要掌握的知识点.为什么?我们在生活中面对各种选择时总要问问自己,我是否应该怎样,不这样会

菜鸟的Linux之路2 bash脚本编程之一

shell脚本编程 脚本编程是一种编程能力的体现. 编程语言分为以下几类: 1,机器语言 2,汇编语言 3,高级语言: (1)静态语言:编译型语言->强类型语言 强类型语言指的是变量的类型在程序执行前声明好,不能在程序执行过程中随意改变变量类型的语言. 强类型语言常见的有:C.C++.Java.C#等. 编译型语言在程序执行前会依靠编译器将程序全部转换成可执行的二进制格式. 编译型语言需要事先确定好变量类型,因为它没有解释器,解释器的机制可以帮助程序自动声明变量的类型. 强类型的语言,变量在使用

在Fedora下自动配置Java开发环境的bash脚本(适用于使用bash终端的Linux)

JavaSE安装文件的压缩包: jdk-8u11-linux-x64.tar.gz Eclipse文件压缩包: eclipse-jee-luna-R-1403767800374.tar.gz IntelliJ IDEA免费版的压缩包: ideaIC-13.1.4b.tar 安装前的准备工作: 在根目录下新建一个目录/Program,将其设置为当前用户全权限的状态 运行脚本的时候需要在当前用户的目录下(你可以自己修改),安装包文件查找使用的正则请根据需要自行修改 安装Java环境的脚本,(只适用于