使用多个命令

如果想要多个命令同时运行,可以把它们放在一行,用分号隔开。

  1. date;who

创建shell脚本文件

创建shell脚本时,必须在文件第一行指定要使用的shell

  1. #!/bin/bash

显示消息

echo命令可以用单引号或双引号来划定文本字符串。建议使用双引号。

  1. [root@node1 ljy]# more ceshi.sh
  2. #!/bin/bash
  3. echo "the time are:"
  4. date
  5. echo "ceshi_1"
  6. echo ceshi_2
  7. [root@node1 ljy]# sh ceshi.sh
  8. the time are:
  9. 2019 05 16 星期四 19:07:35 CST
  10. ceshi_1
  11. ceshi_2

如果想把文本字符串与时间输出在同一行,可以加-n参数。

  1. [root@node1 ljy]# more ceshi.sh
  2. #!/bin/bash
  3. echo -n "the time are:"
  4. date
  5. [root@node1 ljy]# sh ceshi.sh
  6. the time are:2019 05 16 星期四 19:08:50 CST

使用变量

1、环境变量

可以用set命令来显示一份完整的当前环境变量列表。

在脚本中,可以在环境变量的名称前加上美元符($)来使用这些环境变量。

如果要显示美元符,在美元符前面加一个反斜线\。

2、用户变量

用户变量区分大小写,使用等号将值赋给变量,在变量、等号、值之间不能出现空格。

有两种方式可以将命令输出赋给变量:

a,反引号字符(`)

b,$()格式

  1. [root@node1 ~]# test=`date`
  2. [root@node1 ~]# echo $test
  3. 2019 05 17 星期五 09:22:03 CST
  4. [root@node1 ~]# test2=$(date)
  5. [root@node1 ~]# echo $test2
  6. 2019 05 17 星期五 09:22:19 CST

举例

  1. [root@node1 ljy]# more ceshi.sh
  2. #!/bin/bash
  3. today=$(date +%y%m%d)
  4. ls -al > log.$today
  5. [root@node1 ljy]# sh ceshi.sh
  6. [root@node1 ljy]# ll
  7. 总用量 8
  8. -rw-r--r-- 1 root root 54 5 17 09:25 ceshi.sh
  9. -rw-r--r-- 1 root root 213 5 17 09:25 log.190517

today变量是被赋予格式化后的date命令的输出,+%y%m%d格式告诉date命令将日期显示为两位数的年月日组合。

管道

管道(|)被放在命令之间,将一个命令的输出重定向到另一个命令中,即第一个命令产生的结果的同时,传递给下一个命令。

  1. [root@node1 ljy]# rpm -qa | sort >rpm.list
  2. [root@node1 ljy]# more rpm.list
  3. acl-2.2.51-14.el7.x86_64
  4. aic94xx-firmware-30-6.el7.noarch
  5. alsa-firmware-1.0.28-2.el7.noarch
  6. alsa-lib-1.1.4.1-2.el7.x86_64
  7. alsa-tools-firmware-1.1.0-1.el7.x86_64
  8. basesystem-10.0-7.el7.centos.noarch
  9. bash-4.2.46-30.el7.x86_64

退出脚本

shell中运行的每个命令都使用退出状态码告诉shell已经运行完毕。

Linux提供了一个专门的变量$?来保存上个已执行命令的退出状态码

exit命令允许你在脚本结束时指定一个状态码

  1. [root@node1 ljy]# more ceshi.sh
  2. #!/bin/bash
  3. date
  4. [root@node1 ljy]# sh ceshi.sh
  5. 2019 05 17 星期五 09:42:18 CST
  6. [root@node1 ljy]# echo $?
  7. 0
  8. [root@node1 ljy]# more ceshi.sh
  9. #!/bin/bash
  10. date
  11. exit 5
  12. [root@node1 ljy]# sh ceshi.sh
  13. 2019 05 17 星期五 09:42:43 CST
  14. [root@node1 ljy]# echo $?
  15. 5

shell初级-----构建基本脚本的更多相关文章

  1. Shell文件权限和脚本执行

    一.预备知识 1.shell的作用   2.常识 (1)Tab键自动补全   使用Terminal时,输入命令的前几个字母,敲tab会自动补全命令或文件名.目录等. 好处:操作速度更快:不容易出错: ...

  2. LR12.53—第1课:构建Vuser脚本

    第1课:构建Vuser脚本 要生成系统上的负载,首先建立一个可以运行以模拟真实用户行为Vuser脚本.您使用VuGen创建和构建Vuser脚本. 在这一课中,你将涵盖以下主题: 介绍VuGen将 - ...

  3. shell中引用其他脚本的方法

    在Shell中引用其他脚本的方法是source   filename.sh 或    .    filename.sh 注意:      .   和   filename.sh之间必须有空格

  4. shell编程之服务脚本编写,文件锁以及信号捕获

    shell脚本编程是linux运维工程师必备的技能,也是非常重要的一个技能,所以把shell编程学好,只有好处.基础语法我也就不讲了,学过C语言这些语言的,稍微看一下就能明白shell编程的基础,所以 ...

  5. Linux - 简明Shell编程11 - 调用脚本(CallTheScript)

    脚本地址 https://github.com/anliven/L-Shell/tree/master/Shell-Basics 示例脚本及注释 主脚本: CallTheScript.sh #!/bi ...

  6. Linux shell编写端口扫描脚本

    Linux shell编写端口扫描脚本 需求: 扫描特定主机 扫描特定主机的特定端口 扫描特定网段 扫描特定网段中哪些主机开放了特定的端口 源码如下: #/bin/bash #该脚本用于对特定目标主机 ...

  7. Shell - 简明Shell入门11 - 调用脚本(CallTheScript)

    示例脚本及注释 主脚本: CallTheScript.sh #!/bin/bash . ./11-subscript.sh # 调用其他脚本;注意点号"."和文件路径之间有一空格; ...

  8. (转)shell实现多级菜单脚本编写

    shell实现多级菜单脚本编写 原文:https://www.yuanmas.com/info/2gOwBPvqyb.html 这篇文章主要介绍了Shell实现多级菜单系统安装脚本实例分享,本文脚本用 ...

  9. shell的while/for脚本的简单入门

    shell的while/for脚本的简单入门 while [condition] dodone关键字break跳出循环,continue跳过循环的余下部分. for var in ...;do...d ...

随机推荐

  1. 阿里云ecs docker使用(2)

    1. 退出docker容器 命令 exit 2.sudo docker ps -l 3. sudo docker images 4. sudo docker commit ba300f05c1a3 c ...

  2. php 生成bing词典能导入的xml(有道词典->bing词典)

    编程以来一直用网易有道词典查单词.翻译:最近一直在看英文方面的资料,于是越来越对有道词典(划词.广告,本来想转灵格斯的,但灵格斯没有android版)不满意,一番试用后决定转bing词典,于是想把有道 ...

  3. oracle数据库用户创建删除以及数据导入

    dmp文件的导入:1.首先,先创建表空间与用户--创建表空间create tablespace CCFOCUS01datafile 'D:\app\Administrator\oradata\orcl ...

  4. logback备注

    <?xmlversion="1.0"encoding="UTF-8"?> <!-- <configuration>包含的属性 sc ...

  5. Java企业微信开发_10_未验证域名归属,JS-SDK功能受限

    1.现象: 在企业微信后台填写可信域名后,提示:未验证域名归属,JS-SDK功能受限,如下图: 点击“申请域名校验”后, 注意:域名根目录 当时一直不清楚这个域名根目录在哪里,最后让我给试出来了 2. ...

  6. PHP留言小练习

    实现功能: 留言.搜索.编辑.删除.详情页.时间.点击量 页面划分: index.html(留言列表页) add.html(留言页) edit.php(编辑页) del.php(删除页) view.p ...

  7. 「LuoguP4180」 【模板】严格次小生成树[BJWC2010](倍增 LCA Kruscal

    题目描述 小C最近学了很多最小生成树的算法,Prim算法.Kurskal算法.消圈算法等等.正当小C洋洋得意之时,小P又来泼小C冷水了.小P说,让小C求出一个无向图的次小生成树,而且这个次小生成树还得 ...

  8. 【运维程序】简单的命令控制器(支持定时命令执行、重复定时任务命令和进程管理,开发这个小程序主要是为了方便管理服务进程)【个人github项目】

    一.前言: command-controller 一个运维程序,简单的命令控制器(支持定时命令执行和重复定时命令,开发这个程序主要是为了方便管理服务进程) 本来是要用python做的,但是之前做ffm ...

  9. [转] 编写高效的 CSS 选择器

    高效的CSS已经不是一个新的话题了,也不是我一个非得重拾的话题,但它却是我在Sky公司工作之时,所感兴趣的,关注已久的话题. 有很多人都忘记了,或在简单的说没有意识到,CSS在我们手中,既能很高效,也 ...

  10. Visual Studio 编译后去掉只读属性

    Visual Studio 编译后去掉只读属性 attrib $(TargetPath) -R attrib $(TargetDir)$(TargetName).pdb -R