shell基础教程

时间:2021-1-18 作者:admin

SHELL脚本语言

今天开始学习shell语言

Shell 脚本

Shell 脚本(shell script),是一种为 shell 编写的脚本程序。
业界所说的 shell 通常都是指 shell 脚本,但读者朋友要知道,shell 和 shell script 是两个不同的概念。
由于习惯的原因,简洁起见,本文出现的 “shell编程” 都是指 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 也可以使用其他符号:

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

:<<!
注释内容...
注释内容...
注释内容...
!
声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。