shell基础脚本命令记录

关于

shell script是利用shell的功能所写的一个程序,这个程序是使用纯文本文件,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。

shell和shell脚本的区别

Shell就是一个命令行解释器,它的作用就是遵循一定的语法将输入的命令加以解释并传给系统。
Shell既是一种命令语言,又是一种程序设计语言(就是你所说的shell脚本)。作为命令语言,它互动式地解释和执行用户输入的命令;

命令 echo $SHELL 可以查看linux系统的默认解析,当然终端面板上面也显示了
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RZ0n1gU0-1638262533792)(evernotecid://9B6BBD63-435E-4B6E-A589-BC34C0283BE5/appyinxiangcom/24055143/ENResource/p575)]


运用

基本使用介绍

  • 创建一个.sh(代表shell)为扩展名的文件【扩展名不影响文件的执行,使用js扩展名也行,但是规范扩展名可读性更强】
  • 输入代码,第一行一般是#!/bin/bash【其中"#!" 是一个约定的标记,告诉系统脚本需要什么解释器来执行,即用哪一种Shell,如果#!指定指定的解析器不存在 则会使用系统默认的解析器】
  • 执行脚本,执行脚本有如下三种形式
    1. bash xxx.sh执行文件【指明先用bash解析器解析,如果bash不存在才会使用默认解析器】
    2. sudo su获取操作权限,然后在通过. xxx.sh执行文件【这种方式直接使用默认解析器解析】
    3. chmod +x xxx.sh添加可执行文件,再通过./xxx.sh执行文件【先按照文件中#!指定的解析器解析,不存在使用默认】

命令行使用

  1. # # 表示注释当前行,下面是多行注释
:<<EOF
注释内容...
注释内容...
EOF
  1. echo hello echo命令用于向窗口输出文本。
    在这里插入图片描述

  2. 定义变量名

    • 使用变量名=的方式,通过$去引用变量
      • 变量名和等号之间不能有空格、只能使用英文字母,数字和下划线,首个字符不能以数字开头
      • 中间不能有空格,可以使用下划线 _,不能有标点符号,不能使用bash里的关键字
    • unset 变量名 清楚变量
    • readonly 变量名 只读变量,不能修改,只能读取
    name = 'yan'
    echo $name
    unset name # 清楚变量
    echo $name
    readonly age 
    age = 19 #报错:test.sh: line 19: age: command not found
    echo $age
  1. 字符串相关操作
    • 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的
    • 双引号里可以有变量,且可以有转义字符
    • 提取字符串${变量:索引1:索引2}
    • 获取字符串长度 ${#变量名}
#拼接字符串
name="runoob"
# 使用双引号拼接
greeting="hello, "$name" !"
greeting_1="hello, ${name} !"
echo $greeting  $greeting_1 // hello, runoob ! hello, runoob !
# 使用单引号拼接
greeting_2='hello, '$name' !'
greeting_3='hello, ${name} !'
echo $greeting_2  $greeting_3 // hello, runoob ! hello, ${name} !
# 提取字符串
string="Yan、yan_yan"
echo "输出:" ${string:1:4} # 输出: an、y
#获取字符串长度
string="yan"
echo ${#string} #输出 4
  1. 数组变量
    • 定义数组,array_name=(value0 value1 value2 value3),括号包裹数组,变量之间使用空格
    • 读取数组变量${数组名[下标]}
    • @获取数组的所有元素,echo ${array_name[@]},@替换成*也是一样的
arr=(1 4 'yan' 23)
# echo ${arr[2]} # yan
# echo ${arr} # 1
echo ${arr[@]} # 输出全部数组 1 4 yan 23
echo ${arr[*]} # 同上
  1. 手动输入赋值变量
    • 通过 read 的形式可以读取键盘输入的变量值,但只允许后面跟一个变量,否则会报错
    • 加参数 -p 则可以一行显示,更好的读取体验
    • 通过$0可以获取执行文件名,$1可以获取第一个输入的参数,$2是第二个输入参数,以此类推
    read -p "请输入num值:" num
    echo "输入的变量值是:"$num
    # 键盘读取多个值
    read name age
    echo "输入的姓名年龄是:$name $age"    
    # 获取输入参数
    echo $0
    echo $2
    echo $1

  • 其他特殊字符
    在这里插入图片描述
  1. 运算符操作
    • 使用``反引号,里面的操作数需要用空格隔开,其中expr 是一款表达式计算工具,使用它能完成表达式的求值操作
    • 乘号(*)前边必须加反斜杠()才能实现乘法运算;
    • if…then…fi 是条件语句
# 运算符
val=`expr 2 + 2`
echo "两数之和为 : $val"
a=10
b=20
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

常用算术符号
在这里插入图片描述
8. 其他
* $表示取结果。和变量名一起使用表示取变量的值,和()一起使用表示取命令群组的执行结果
* 使用关键字data可获取时间

    echo $(date) # 2021年11月30日 星期二 16时43分53秒 CST
    echo $(date +%Y%m%d-%H%M%S) # 20211130-164353
    echo $(ls /) # Applications Library System Users Volumes bin cores dev etc home opt private sbin tmp usr var

参考

https://baike.baidu.com/item/Shell%E8%84%9A%E6%9C%AC

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值