linux中shell语法(1)

概论:

shell是我们通过命令与操作系统沟通的语言。
shell脚本可以直接在命令行中执行,也可以将一套逻辑组织成一个文件,方便复用。
Terminal中的命令可以看成是一个shell脚本在逐行执行
Linux中常见的shell脚本有很多种,常见的有:

  • Bourne Shell(/usr/bin/sh或/bin/sh)
  • Bourne Again Shell(/bin/bash)
  • C Shell(/usr/bin/csh)
  • K Shell(/usr/bin/ksh)
  • zsh

    脚本实例:
    新建一个test.sh文件,内容如下:
!# /bin/bash
ecoh "Hello World!"

运行方式:

  • chmod +x test.sh 使脚本具有可执行的权限
    ./test.sh 当前路径下执行
    Hello Wold! 脚本输出
    /home/acs/test.sh 绝对路径下执行
    Hello World! 脚本输出
    ~/test.sh 家目录路径下执行
    Hello World! 脚本输出
    用解释器执行
    bash test.sh
    Hello World! 脚本输出

注释:

每行中 # 之后的内容均是注释

  • echo ‘Hello World!’ #这是注释

多行注释
格式:

 :<<EOF
第一行注释
第二行注释
第三行注释
EOF

其中EOF替换其他的字符串

变量:

定义变量,不需要加$符号,例如:

name='zbc' #单引号定义字符串
name="zbc"#双引号定义字符串
name=zbc#也可以不加引号,同样表示字符串

使用变量

使用变量,需要加上 $ 符号,或者 ${ }符号。花括号是可选的,主要是帮助解决识别变量便捷。

name=zbc
echo $name #输出zbc
echo ${name}#输出zbc
echo ${name}abc #输出zbcabc

只读变量

使用readonly或者declare可以将变量变为只读。

name=zbc
readonly name
declare -r name #两种写法均可
name=abc #会报错因为name只读

删除变量

unset 可以删除变量

name=zbc 
unset name
echo $name #输出空行

变量类型

1.自定义变量(局部变量)
子进程不能访问的变量
2.环境变量(全局变量)
子进程可以访问的变量
在这里插入图片描述

字符串

字符串可以用单引号双引号也可以不用引号。
单引号与双引号的区别:

  • 单引号的内容会原样输出,不会执行,不会取变量;
    双引号中的内容可移执行,可以取变量;

name=zbc # 不用引号
echo 'hello, $name \"hh\"'  # 单引号字符串,输出 hello, $name \"hh\"
echo "hello, $name \"hh\""  # 双引号字符串,输出 hello, zbc "hh"

获取字符串长度

name=zbc
echo ${#name} #输出3

提取子串长度

name=zbc
echo ${name:0:5} #提取从0开始的5个字符

默认变量

文件参数变量
在执行shell脚本时,可以向脚本传递参数。$1是第一个参数,$2是第二个参数,以此类推。特殊的,$0是文件名(包含路径)。
例如:
创建文件test.sh:

#! /bin/bash
echo "文件名"$0
echo "第一个参数"$1
echo "第二个参数"$2
echo "第三个参数"$3

然后执行脚本:
在这里插入图片描述
其他参数相关变量
在这里插入图片描述

数组:

**定义:**数组中可以存放多个不同类型的值,只支持一维数组,初始化时不需要指明数组大小,数组下标从0开始。数组用小括号表示,元素之间用空格隔开。例如:

  • array=(1 abc “def” zbc)

也可以直接定义数组元素中某个元素的值:

  • array[0]=1
    array[1]=abc
    array[2]=“def”
    array[3]=zbc

读取数组中某个元素的值
格式:

  • ${arry[index]}
    例如:

arry=(1 abc "def" zbc)
echo ${array[0]}
echo ${array[1]}
echo ${array[2]}
echo ${array[3]}

读取整个数组
格式:

array=(1 abc "def" zbc)

echo ${array[@]}  # 第一种写法
echo ${array[*]}  # 第二种写法

数组长度

${#array[@]}  # 第一种写法
${#array[*]}  # 第二种写法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值