shell基础教程

SHELL脚本语言

今天开始学习shell语言

Shell 脚本

Shell 脚本(shell script),是一种为 shell 编写的脚本程序。
业界所说的 shell 通常都是指 shell 脚本,但读者朋友要知道,shell 和 shell script 是两个不同的概念。
由于习惯的原因,简洁起见,本文出现的 “shell编程” 都是指 shell 脚本编程,不是指开发 shell 自身。

下面是我整理的思维导图:

在这里插入图片描述

Shell脚本入门

Shell echo命令
Shell 的 echo 指令与 PHP 的 echo 指令类似,都是用于字符串的输出。命令格式:

echo string

可以使用echo实现更复杂的输出格式控制。

第一个shell脚本:
打开终端
创建并打开vim helloworld.sh
编辑第一个脚本:

echo “helloworld”

运行shell脚本有三种方式:

  • 使用最高权限打开: ./helloworld.sh
  • 使用sh命令打开:sh.helloworld.sh
  • 使用bash方法打开:bash.helloworld.sh
    第二个shell脚本::多命令处理
    打开终端创建并编辑vim touch.sh,命令如下:
vim touch.sh

#!/bin/bash

cd /home/df/桌面
touch baz.txt
echo "I love xiaowugui" >>baz.txt  #">>是把编译的内容追加到指定文件"
:wq #退出并保存

然后执行 sh.touch.sh,会发现桌面上会多出来一个baz.txt 打开Vi baz.txt会发现输出语句
“ I love xiaowugui”
上面的多命令分为四步:
先进入到cd /home/df/桌面
然后创建touch baz.txt
输出语句echo “I love xiaowugui”
最后追加到echo “I love xiaowugui” >>baz.txt

常用变量

自定义变量
一:基础语法
定义变量:变量=值;

a=2  
echo $a
输出2

有人说我不想用这个变量了怎么办
unset [变量名] 进行删除

声明静态变量:readonly ss=2 静态变量不能使用unset删除

readonly ss=2
echo $ss
输出2
unset ss
bash: unset: ss:无法取消设定: 只读 variable

Shell变量命名规则
变量名必须是以字母或下划线字符“_”开头,后面跟字母、数字或下划线字符。不要使用?、*或其他特殊字符命名你的变量。

注意:
变量名和等号之间不能有空格;
首个字符必须为字母(a-z A-Z)
中间不能有空格,可以是下划线
不能使用标点符号
变量里的空格需要用“”隔开
不能使用bash里的关键字

二:如何把变量提升到全局变量,可供其他程序使用
export [变量名]:让这个变量升级为全局变量让其他程序也可以使用

#先定义变量D
D=1
#然后再编辑C
vim c.sh
echo = "helloworld"
echo $D
#将B放入c中
#然后输出C
echo $C
#结果只有helloworld
export D
#再输出C
echo $C
helloworld
1

以上就是全局变量的用法

1.特殊变量:$n

1.基本语法
$n(功能描述:n为数字,$0代表该脚本名称,$1- 9 代 表 第 一 到 第 九 个 参 数 , 十 以 上 的 参 数 需 要 用 大 括 号 包 含 , 如 9代表第一到第九个参数,十以上的参数需要用大括号包含,如 9{10})

#1.输出该脚本文件名称,输入参数1和输入参数2的值

   $touch parameter.sh       $vim parameter.sh   

   #! /bin/bash   echo “$0 $1 $2 $3”   

   $ chmod 777 parameter.sh

   运行此脚本:bash parameter.sh   则结果为paramerter.sh

              命令:bash parameter.sh a  则结果paramerter.sh a

#依次类推,命令parameter.sh a b c d 则结果:parameter.sh a b c   不显示第四个参数

2.特殊变量:$

1)基本语法:$#(功能描述:获取所有输入参数个数,常用于循环)

(2)案例实操:获取输入参数的个数

$vim parameter.sh

      #/bin/bash

      echo$0 $1 $2echo $#
  获取权限:Chmod 777 parameter.sh

        执行脚本:./parameter.sh a b 

        结果:parameter.sh a b 2

3.特殊变量:$* $@

∗ ( 功 能 描 述 : 这 个 变 量 代 表 命 令 行 中 所 有 的 参 数 , *(功能描述:这个变量代表命令行中所有的参数, *把所有的参数看成一个整体)

@ ( 功 能 描 述 : 这 个 变 量 也 代 表 命 令 行 中 所 有 的 参 数 , 不 过 @(功能描述:这个变量也代表命令行中所有的参数,不过 @@把每个参数区分对待)

4.特殊变量:$?

(1)基本语法:$?(功能描述:最后一次执行的命令的返回状态。如果这个变量的值为0,则证明上一个命令正确执行;如果这个变量的值为非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确)

(2)案例实操:判断helloworld.sh脚本是否执行正确

#执行脚本
    ./helloworld.sh
 #结果为:
     hello world
#输入命令:
echo $?
   显示结果为0 就是执行正确,非0,则不正确

Shell 注释

以 # 开头的行就是注释,会被解释器忽略。

通过每一行加一个 # 号设置多行注释,像这样:

#--------------------------------------------
#这是一个注释
#author:菜鸟教程
#site:www.runoob.com
#slogan:学的不仅是技术,更是梦想!
#--------------------------------------------
#####用户配置区 开始 #####
#
#
#这里可以添加脚本描述信息
# 
#
#####用户配置区 结束  #####

多行注释
多行注释还可以使用以下格式:

:<<EOF
注释内容...
注释内容...
注释内容...
EOF

EOF 也可以使用其他符号:

:<<'
注释内容...
注释内容...
注释内容...
'

:<<!
注释内容...
注释内容...
注释内容...
!

以下是我整理出的理论知识:

Shell

Shell脚本简介:

用C语言来开发的程序,用户和Linux之间很重要的一个沟通工具

Shell即是命令,也是程序设计语言

Shell脚本:

Shell是指一种应用程序,提供了一个界面,用户通过这个界面访问操作系统内核的服务

Shell脚本(Shell script)是一种为Shell编写的脚本程序

平时我们说的shell值shell脚本(shell和shell script是两个不同的概念)

Shell环境

只要一个能编写的代码的文本编译器和一个能解释脚本的解释器

种类:
Bourne Shell (/usr/bin/sh)
Bourne Again Shell (/bin/bash) 主要应用程序
C Shell (/usr/bin/csh)
K Shell (/bin/ksh)
Shell fir Root (/sbin/sh)

Shell特点
1.编译语言与解释型语言的差异

2.如何编写和运行Linux Shell

3.Linux Shell 运行在环境变量中,环境变量的设置

4.#!是一个约定的标记,他的目地在于告诉系统这个脚本需要一个什么编译器来执行(也就是执行那一种Shel)

5.echo 命令用于向窗口输出文本
Hello world代码运行:
#!/bin/bash

echo “hello world”
保存并推出

执行文件 bash Hello world.sh
输出 Hello world

Shell运行方式:
1.作为可执行程序运行
格式:chmod +x ./脚本名称 (给脚本添加执行权限)
./脚本名称 (直接执行代码)注:./文件路径必须加

2.作为解释器的参数运行
格式:/bin/sh xxx.sh

Shell变量
存储数据的容器,通过容器变量存储可以变化的数据

声明变量(定义变量
声明变量时,变量名称不能添加 符 号 变 量 名 和 “ = ” 之 间 不 能 有 空 格 规 则 : 变 量 的 命 名 只 能 使 用 英 文 字 母 , 数 字 和 下 划 线 , 首 个 字 符 不 能 以 数 字 开 头 中 间 不 能 有 空 格 可 以 使 用 不 能 使 用 标 点 符 号 不 允 许 使 用 中 文 不 能 使 用 b a s h 里 面 的 关 键 字 ( − − h e l p 可 以 查 看 保 留 的 关 键 字 ) ∗ ∗ 使 用 变 量 ∗ ∗ ( 必 须 是 定 义 过 的 变 量 ) 只 需 要 在 变 量 前 面 加 上 符号 变量名和“=”之间不能有空格 规则:变量的命名只能使用英文字母,数字和下划线,首个字符不能以数字开头 中间不能有空格 可以使用_ 不能使用标点符号 不允许使用中文 不能使用bash里面的关键字(--help可以查看保留的关键字) **使用变量**(必须是定义过的变量) 只需要在变量前面加上 =使线使使使使bashhelp使符号就可以调用变量
EX:echo KaTeX parse error: Expected 'EOF', got '#' at position 106: …能被改变 code :#̲!/bin/bash …{your_name}"!"
str="你好, y o u r n a m e ! " 单 引 号 拼 接 E X : s t r = ′ h e l l o , ′ {your_name}!" 单引号拼接 EX: str='hello,' yourname!"EX:str=hello,{your_name}’!’
str=‘hello,${your_name}!’
数字类型
布尔类型(判断类型)
true——代表真
false——代表假
获取字符串的长度
EX: str=“12345”
${#str}
提取字符串的长度:从原始字符串中截取其中一部分
EX: 截取第二位开始截取5个字符
查找子字符串
查找指定的索引位置
EX: 查找字符串中O的位置
数组
数组是一列有序或者无序的数据集合
在Shell中,通过小括号定义数组,数组的元素用“空格”分割
EX:array=(1 2 3 4 5 6 6 )
arrry=(“avsd” “asdsad” “adsadf”)
读取数组
命令语法 echo ${变量名称_[索引值]}
Shell注释 即为解释器忽略的内容
单行注释 以#开头的行
多行注释 通过每一行加一个#,设置多行注释
EX: :<<任意字符
注释内容
对应的任意字符

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值