关于shell脚本的一些理解和基础

本文详细介绍了Shell脚本的基础知识,包括变量、变量表达式、判断式、条件分支、循环语句和特殊字符的用法。强调了在不同场景下如何正确使用变量,如赋值、截取、条件判断等,并通过示例展示了bash解析器的重要性。
摘要由CSDN通过智能技术生成

shell脚本基本语法

我们都知道,在编写shell脚本的时候第一行必然是#!/bin/bash因为linux中不只有bash一个解析器,不同解析器中的语法不相同,这个是通知系统使用bash解析器

一、shell脚本中的变量

shell中一样可以对变量进行赋值、运算但是需要注意几个点:

1、shell脚本相比C语言有一个优势是变量不需要定义,在使用的时候直接a=1,第一次使用就默认会定义。

2、shell中的变量只有两种类型,整型和字符串。

3、shell中使用变量不能加空格,否则会被识别成命令。

shell脚本中给变量赋值直接写即可,也不需要分号,例

a=2

b=3

c=“this is a test”

但是当使用或者输出的时候则需要前面加一个$符号,另外做加减乘除运算的时候还需要再加两层小括号,还有一些调用是需要花括号的,例

d=$((a+b))

e=$((a-b)) 

f=$((a*b)) 

g=$((a/b)) #取整

h=$((a%b)) #取余

i=$((a**3))#a的三次方



echo $c
echo "a = "$a          #输出a的值
echo "b = "$b          #输出b的值
echo "a+b = "${d}      #输出a+b的值
echo "a-b = "${e}      #输出a-b的值
echo "a**b = "${f}      #输出a*b的值
echo "a/b = "${g}      #输出a/b的值
echo "a%b = "${h}      #输出a%b的值
echo "a^3 = "${i} 	   #输出a的3次方的值

echo "a+b = "$((a+b))  #输出a+b的值
echo "a-b = "$((a-b))  #输出a-b的值
echo "a*b = "$((a*b))  #输出a*b的值
echo "a/b = "$((a/b))  #输出a/b的值
echo "a%b = "$((a%b))  #输出a%b的值
echo "a^3 = "$((a**3)) #输出a的3次方的值

echo $((a+b*a-b/a+a%b+a**2)) #表达式可以很长

有一个小的要注意的点,就是在shell中一行后面加注释的话井号前面要加空格

把上面的内容写到脚本中看一下运行结果:

在ubuntu上运行脚本,使用sh命令:

forlinx@forlinx:~$ sh shell_test.sh 
shell_test.sh: 18: shell_test.sh: arithmetic expression: expecting primary: "a**3"

会有一个a**3报错,这不不是语法问题,由于 是 bash 函数,在 dash里还没声明,DebianUbuntu 默认用dash作为/bin/sh的解释器,所以报错。那么我们换bash命令来执行:

forlinx@forlinx:~$ bash shell_test.sh 
hello world !
a = 2
b = 3
a+b = 5
a-b = -1
a**b = 6
a/b = 0
a%b = 2
a^3 = 8
a+b = 5
a-b = -1
a*b = 6
a/b = 0
a%b = 2
a^3 = 8
13

可以看到执行结果没有问题,脚本的执行还有一种方式就是./这个是我们常用的,但是这种就需要你的脚本有可执行权限,用sh命令或者bash命令就不需要。

forlinx@forlinx:~$ ./shell_test.sh
bash: ./shell_test.sh: Permission denied

另外提一点,如果你的字符串是一整个,比如hello_world!,复制的时候可不加引号,当然加了也不会有问题。

二、sh

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值