zoukankan      html  css  js  c++  java
  • shell初级-----构建基本脚本

    使用多个命令

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

    date;who
    

    创建shell脚本文件

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

    #!/bin/bash
    

    显示消息

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

    [root@node1 ljy]# more ceshi.sh 
    #!/bin/bash
    echo "the time are:"
    date
    echo "ceshi_1"
    echo ceshi_2
    [root@node1 ljy]# sh ceshi.sh 
    the time are:
    2019年 05月 16日 星期四 19:07:35 CST
    ceshi_1
    ceshi_2
    

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

    [root@node1 ljy]# more ceshi.sh 
    #!/bin/bash
    echo -n "the time are:"
    date
    [root@node1 ljy]# sh ceshi.sh 
    the time are:2019年 05月 16日 星期四 19:08:50 CST
    

    使用变量

    1、环境变量

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

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

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

    2、用户变量

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

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

    a,反引号字符(`)

    b,$()格式

    [root@node1 ~]# test=`date`
    [root@node1 ~]# echo $test 
    2019年 05月 17日 星期五 09:22:03 CST
    [root@node1 ~]# test2=$(date)
    [root@node1 ~]# echo $test2  
    2019年 05月 17日 星期五 09:22:19 CST
    

    举例

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

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

    管道

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

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

    退出脚本

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

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

     

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

    [root@node1 ljy]# more ceshi.sh 
    #!/bin/bash
    date
    [root@node1 ljy]# sh ceshi.sh 
    2019年 05月 17日 星期五 09:42:18 CST
    [root@node1 ljy]# echo $?
    0
    [root@node1 ljy]# more ceshi.sh 
    #!/bin/bash
    date
    exit 5
    [root@node1 ljy]# sh ceshi.sh   
    2019年 05月 17日 星期五 09:42:43 CST
    [root@node1 ljy]# echo $?       
    5
    
  • 相关阅读:
    计算机程序的构造和解释
    StackOverflow之旅<1>------{去掉烦人的"!=null"判断}
    tomcat 启动显示指定的服务未安装
    Sql Server 表的复制
    Sql Server配置管理器与 Sql Server Management Studio
    “因为数据库正在使用,所以无法获得对数据库的独占访问权。”处理
    Win10磁贴 横向排列 增加多行 多列 磁贴横向展示
    解决使用Hyper-v 设置虚拟机网卡出现-从网络文件夹中隐藏
    Hyper-V网络设置(物理机+虚拟机)
    易语言等软件自动获取管理员权限,在64位Windows7系统非管理员帐户中执行
  • 原文地址:https://www.cnblogs.com/jinyuanliu/p/10877464.html
Copyright © 2011-2022 走看看