1. 为什么学习 Shell 编程?
  • 用 shell 来进行服务器的管理或维护
  • 对于大数据程序员来说,需要编写 shell 来管理集群
  1. Shell 是什么?

      Shell 是一个命令解释器,它为用户提供了一个 Linux 内核发送请求以便于运行程序的界面系统级程序,用户可以通过shell来启动、挂起、停止甚至是编写一些程序。
  2. Shell 脚本的执行方式(快速编程)
  • 脚本以 #!/bin/bash 开头
  • 脚本需要有可执行权限
  1. 脚本执行方式
  • 方式1(输入脚本的绝对路径或相对路径

    • 首先赋予脚本的 +x 权限
    • 执行脚本
  • 方法2(sh + 脚本)——> 不推荐
    • 说明:不用赋予脚本的 +x 权限,直接执行即可

一、Shell 变量介绍

  • Linux Shell 中的变量分为:系统变量用户自定义变量
  • 系统变量:$HOME、$PWD、$SHELL、$USER 等等
#!/bin/bash
echo "PATH=$PATH"
  • 显示当前 shell 所有变量:set

二、shell 基本语法

  • 定义变量:变量=值
  • 撤销变量:unset 变量
  • 声明静态变量:readonly变量,注意不能 unset

1. shell 变量定义的规则

  • 变量名可以由字母、数字和下划线组成,但是不能以数字开头
  • 等号两侧不能有空格
  • 变量名称一般习惯为大写

2. 将命令的返回值赋给变量

  • A=`ls -la` 反引号,运行该命令,并把结果返回给变量A
  • A=$(ls -la) 等价于反引号
#!/bin/bash
A=100 #定义变量
echo "A=$A"
unset A #撤销变量
echo "A=$A" readonly A=99 #定义和使用静态变量
echo "A=$A"
unset A #静态变量不能unset
echo "A=$A" RESULT=`ls -l/home` #使用反引号
echo $RESULT
echo " "
MY_DATE=$(date) #使用$()来执行
echo "date=$MY_DATE"

小案例:可以把变量提升到全局环境变量,可供其他 shell 程序使用(之后再写)


三、设置环境变量

1. 基本语法

  • export 变量名=变量值 (功能:将 shell 变量输出为环境变量)
  • source 配置文件(功能:让修改后的配置信息立即生效)
  • echo $变量名(功能:查询环境变量的值)
#!/bin/bash
TOMCAT——HOME=/opt/tomcat #定义一个自己的环境变量
export TOMCAT——HOME #输出环境变量

注:可以让上述的环境变量在其他bash 文件中使用

#!/bin/bash
#在另一个shell文件中使用环境变量
#使用我们自定的环境变量
echo "tomcathome=$TOMCAT——HOME"
  1. 脚本下的多行注释
:<<!
!

四、位置参数变量

  当我们执行一个 shell 脚本时,如果希望获取到命令行的参数信息,就可以使用到位置参数变量,比如: /myshell.sh 100 200,这就是一个执行 shell 的命令行,可以在myshell 脚本中获取到参数信息

1. 基本语法

  • $n:n 为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的参数需要用大括号如:${10}
  • $*:代表命令行中所有参数,$*把所有参数看成一个整体
  • $@:代表命令行中所有参数,不过$@把每个参数区分对待
  • $#:代表命令行中所有参数的个数
#!/bin/bash
#获取到各个参数
echo "$0 $1 $2"
echo "$*"
echo "$@"
echo "参数个数=$#"

五、预定义变量

  shell 设计者已经定义好的变量,可以直接在shell脚本中使用

1. 基本语法

  • $$当前进程的进程号(PID)
  • $!后台运行的最后一个进程号
  • $?最后一次执行的命令的返回状态。若谷这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0(具体是那个数,由命令自己来决定),则证明上一个命令执行不正确了
#该bash文件名为prevar.sh
#!/bin/bash
echo "当前的进程号=$$"
./myshell.sh & #后台方式运行 myshell.sh
echo "最后进程的号=$!"

六、运算符

1. 基本语法

  • "$((运算式))" 或 "$[运算式]"
  • expr m + n
    • 注意expr运算符间要有空格
  • expr m - n
  • expr \*,/,% ————> 乘,除,取余

    小案例:计算(2+3)× 4,请求出命令行的两个参数(整数)的和
#!/bin/bash
RESULT1=$(((2+3)*4)) #$((运算式))
echo "result1=$RESULT1" RESULT2=$[(2+3)*4] #$[运算式] 比较简单
echo "result2=$RESULT2" TEMP=`expr 2 + 3` #使用expr
RESULT3=`expr $TEMP \* 4`
echo "result3=$RESULT3" #两个参数(整数)的和
SUM=$[$1+$2]
echo "SUM=$SUM4"

Shell 编程(一)的更多相关文章

  1. Linux学习笔记(17) Shell编程之基础

    1. 正则表达式 (1) 正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配.grep.awk.sed等命令可以支持正则表达式:通配符用来匹配符合条件的文件名,通配符是完全匹配.ls.find ...

  2. shell编程:定义简单标准命令集

    shell是用户操作接口的意思,操作系统运行起来后都会给用户提供一个操作界面,这个界面就叫shell,用户可以通过shell来调用操作系统内部的复杂实现,而shell编程就是在shell层次上进行编程 ...

  3. Linux Shell编程入门

    从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁.用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操 ...

  4. Shell编程菜鸟基础入门笔记

    Shell编程基础入门     1.shell格式:例 shell脚本开发习惯 1.指定解释器 #!/bin/bash 2.脚本开头加版权等信息如:#DATE:时间,#author(作者)#mail: ...

  5. Linux_10------Linux之shell编程------变量

    .-9 vim num.sh #! /bin/bash num1=$1 num2=$2 sum=$(($num1+$num2)) #变量sum是num1和num2的综合 echo $sum 执行 ./ ...

  6. 需要交互的shell编程——EOF(转载)

    在shell编程中,”EOF“通常与”<<“结合使用,“<<EOF“表示后续的输入作为子命令或子shell的输入,直到遇到”EOF“, 再次返回到主调shell,可将其理解为分 ...

  7. ****CodeIgniter使用cli模式运行,把php作为shell编程

    shell简介 在计算机科学中,Shell俗称壳(用来区别于核).而我们常说的shell简单理解就是一个命令行界面,它使得用户能与操作系统的内核进行交互操作. 常见的shell环境有:MS-DOS.B ...

  8. Shell 编程基础之变量和环境变量

    一.变量赋值和引用 Shell 编程中,使用变量无需事先声明,同时变量的命名不惜遵循如下规则: 首个字符必须为字母(a-z,A-Z)或者_ 变量名中间不能有空格,可以使用_连接 不能使用其他表达符号 ...

  9. Linux Shell编程基础

    在学习Linux BASH Shell编程的过程中,发现由于不经常用,所以很多东西很容易忘记,所以写篇文章来记录一下 ls   显示当前路径下的文件,常用的有 -l 显示长格式  -a 显示所有包括隐 ...

  10. centos 下建用户 shell编程

    useradd 用户名 passwd 用户名 cat /etc/passwd  查看用户信息 删除用户 userdel -r   加一个 -r 表示把用户及用户的主目录都删除 su  切换用户 sud ...

随机推荐

  1. 第15.14节 PyQt(Python+Qt)入门学习:Designer的Buttons按钮详解

    一.引言 Qt Designer中的Buttons部件包括Push Button(常规按钮.一般称按钮).Tool Button(工具按钮).Radio Button(单选按钮).Check Box( ...

  2. 搭建ARL资产安全灯塔

    老年人了,只能靠安装部署项目混混日子这样~ 简介: 斗象TCC团队正式发布「ARL资产安全灯塔」开源版,该项目现已上线开源社区GitHub.ARL旨在快速侦察与目标关联的互联网资产,构建基础资产信息库 ...

  3. 在 GitHub 玩硬件——GitHub 热点速览 Vol.49

    作者:HelloGitHub-小鱼干 本周的 GitHub Trending 可以说是非常之硬核,天才少年稚晖君的 2 个硬件变装项目荣登热点榜,看完将充电宝改装为显示器的视频,搭配 HDMI-PI ...

  4. SQL数据库优化的六种方法

    SQL命令因为语法简单.操作高效受到了很多用户的欢迎.但是,SQL命令的效率受到不同的数据库功能的限制,特别是在计算时间方面,再加上语言的高效率也不意味着优化会更容易,所以每个数据库都需要依据实际情况 ...

  5. LZZ磁力资源搜索4.2.2,整合多个站点,大部分资源都能搜到

    资源搜索 4.2.2.20200310网友提出的功能已完成1:新增 时间日期排序,单击表头或右键菜单选择,即可自动排序2:新增 搜索完毕 音效开启或关闭 选项3:资源站点 Sunyaa 由聚合站点改为 ...

  6. 蒲公英 · JELLY技术周刊 Vol.33: 前端基础课堂开课啦~

    蒲公英 · JELLY技术周刊 Vol.33 页面文件太大?图片过大了吧:页面加载白屏?很有可能是字体文件还没加载完:页面加载时间过长?多半是主进程被阻塞--该怎么办呢?快来小葵,咳咳,「蒲公英」前端 ...

  7. 第 5篇 Scrum 冲刺博客

    一.站立式会议 1.站立式会议照片 2.昨天已完成的工作 售货员页面功能 3.今天计划完成的工作 添加登录系统账号密码数据库模块 继续对商品销售部分进行编码 职工管理页面 4.工作中遇到的困难 ①页面 ...

  8. Day5 Scrum 冲刺博客

    一.站立式会议# 1. 会议照片 2. 工作进度+燃尽图 团队成员 昨日完成工作 今日工作计划 遇到的困难 周梓波 将方块分类并抽象成类 将方块旋转变形 逻辑漏洞较多 纪昂学 绘制游戏背景,方块,状态 ...

  9. 通过CSS绘制五星红旗

    任务要求: 1.创建一个div作为红旗旗面,用CSS控制其比例宽高比为3:2,背景为红色. 2.再创建五个小的div,用CSS控制其大小和位置. 3.用CSS同时控制每个小div的大小.边框和位置,同 ...

  10. CF1320 Div1 D.Reachable Strings 题解

    题目大意 给定一个长为\(n\)的01串\(S\),每次你可以对一个串的三个连续位置做:\(011 \rightarrow 110\),\(110 \rightarrow 011\)的操作. 有\(q ...