shell基础入门

1.第一个shell脚本

使用vi/vim命令,新建文件.sh(sh 代表shell)文件,编写如下内容.

#!/bin/bash
echo "hello world!"

#! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行 .#!/bin/bash就是让/bin/bash命令来执行这个shell脚本。注意中间不能有空格。
echo 命令用于向窗口输出文本.

注意要修改这个文件的权限,让其具有执行权限.不然无法执行.

2.shell变量

  • 变量命名规则:
  1. 只能英文,数字,下划线.首字母不能以数字开头.
  2. 中间不能有空格
  3. 不能使用bash关键字.
  • 定义变量
username="runoob.com"
  • 使用变量,在变量名前加美元符号$即可
echo  $username
或者:
echo ${username} {}是可选的,加花括号是为了帮助解释器识别变量的边界
  • 只读变量
    使用readonly将变量定义为只读变量,只读变量不能改变.
readonly url
url="www.baidu.com"
  • 删除变量,变量被删除后不能被再次使用.
unset username

运行shell时,会同时存在三种变量:

  1. 局部变量 局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。
  2. 环境变量 所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。
  3. shell变量 shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行

3.shell字符串

shell字符串可以用单引号,双引号,也可以不用引号.

3.1单引号

username='young'
str="my name is $username"

echo $str

输出结果:
在这里插入图片描述

  • 单引号里的任何字符都会被原封不动的输出,单引号中的变量是无效的.
  • 单引号字符串中不能出现一个单独的单引号(对单引号使用转义字符也不行).但可以成对出现,作为字符串拼接使用.

3.2双引号

your_name='young'

str="hello,$your_name"
echo $str

输出结果:
在这里插入图片描述

  • 双引号里可以有变量
  • 双引号里可以有转义字符.

拼接字符串:

yourname='young'

str="hello "${yourname}" !"

str2="hello "$yourname" !"

str3="hello $yourname !"

echo $str
echo $str2
echo $str3


str4='hello "${yourname}" !'

str5='hello '$yourname' !'

str6="hello '$yourname' !"

echo $str4
echo $str5
echo $str6

输出结果:
在这里插入图片描述

3.3shell数组

bash支持以为数组,并且没有限定数组的大小.数组元素的下标从0开始.获取数组中的元素要利用下标.下标可以是整数或者表达式,其值应该大于或者等于0;

  • 定义数组:
    在shell中,用括号来表示数组,数组元素用"空格"符号来分割.
  • 读取数组:
    读取数组的一般格式:${数组名[下标]}
arrayname=(hello world my love)

echo ${arrayname[0]}
echo ${arrayname[@]}
echo ${#arrayname}

@符号可以获取数组中的所有元素.
#符号可以获取数组的长度

输出结果:
在这里插入图片描述

3.4shell注释

#符号开头的行就是注释,会被解释器忽略.可以通过每一行加一个#符号设置多行注释.
每一行注释态麻烦,可以使用:

:<<eof
注释
eof

这种形式来框住注释块.

#!/bin/bash
arrayname=(hello world my love)

echo ${arrayname[0]}

echo ${arrayname[@]}

echo ${#arrayname}

#这是注释1
#这是注释2

:<<eof

这是被注释的地方1

这是被注释的第二行

eof

输出结果:
在这里插入图片描述

还可以使用:<<! 注释块 ! 或者 :<<' 注释块 '来进行注释

4.shell基本运算符

4.1算术运算符

原生的bash不支持简单的数学运算,但是可以通过其他命令来实现,如awk,expr.常用的是expr.
expr是一款表达式计算工具,使用它能完成表达的求值运算.
在这里插入图片描述

  • 注意,表达式和运算符之间要有空格,如写成2+2是不对的,要写成2 + 2;
  • 完整的表达式要被``包含,注意这个字符是esc键下面的字符.
  • 注意,条件表达式要放在[]之间,并且要有空格.如[$a == $b]是错误的,

示例:

#!/bin/bash


a=10
b=20

echo "a原来的值是:$a     b原来的值是:$b"


val=`expr $a + $b`
echo " a+b 的值为: $val"

val=`expr $a+$b`
echo " a+b 的值为: $val"

val=`expr $a - $b`
echo "a-b 的值为: $val"

val=`expr $a \* $b`
echo "a*b 的值为: $val"

val=`expr $a / $b`
echo "a/b 的值为: $val"

val=`expr $a % $b`
echo "a%b 的值为: $val"

if [ $a == $b ]
then
   echo "a等于b"
fi

if [ $a != $b ]
then
 echo "a不等于b"
fi

a==b

if [ $a==$b ]
then
  echo "a等于b"
fi

if [ $a!=$b ]
then
  echo "a不等于b"
fi

输出结果:
在这里插入图片描述

4.2关系运算符

关系运算符只支持数字,不支持字符串,除非字符串的值数字
在这里插入图片描述

#!/bin/bash

a=10
b=20

echo $a
echo $b


if [ $a -eq $b ]
then
   echo "$a == $b : true"
else
   echo "$a == $b: false"
fi

if [ $a -ne $b ]
then
        echo "$a != $b true"
else
        echo "$a != $b false"
fi

if [ $a -lt $b ]
then
        echo "$a < $b true"
else
        echo "$a < $b false"
fi


if [ $a -gt $b ]
then
        echo "$a > $b true"
else
        echo "$a > $b false"
fi

if [ $a -ge $b ]
then
        echo "$a >= $b true"
else
        echo "$a >= $b false"
fi



if [ $a -le $b ]
then
        echo "$a <= $b true"
else
        echo "$a <= $b false"
fi

输出结果:
在这里插入图片描述

4.3布尔运算符

在这里插入图片描述

#!/bin/bash

a=10
b=20


if [ $a -gt 10 -a $b -gt 10 ]
then
        echo "false"
else
        echo "true"
fi



if [ $a -gt 10 -o $b -gt 10 ]
then
        echo "true"
else
        echo "false"
fi


if [ $a != $b ]
then
        echo "false"
else
        echo "true"
fi

输出结果:
在这里插入图片描述

4.4逻辑运算符

在这里插入图片描述


#!/bin/bash

a=10
b=20


if [[ $a -lt 20 && $b -gt 12 ]]
then
        echo "true"
else
        echo "false"
fi



if [[ $a -gt 20 || $b -gt  12 ]]
then
        echo "true"
else
        echo "false"
fi

输出结果:
在这里插入图片描述

  • 注意if 后面的[[ 两个中括号要连在一起。

4.5字符串运算符

在这里插入图片描述


#!/bin/bash

a="abc"
b="qwe"

if [ $a = $b ]
then
        echo "字符串a和字符串b 相等"
else
        echo "字符串a和字符串b不相等"
fi


if [ -z $a ]
then
        echo "字符串a的长度为0"
else
        echo "字符串a的长度不为0"
fi


输出结果:
在这里插入图片描述

4.6文件测试运算符

在这里插入图片描述
命令太多,懒得写了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值