shell脚本基础1 概述及变量

shell概述:
在linux内核与用户之间的解释器程序
通常指/bin/bash
负责指向内核翻译及传达用户/程序指令
相当于操作系统的“外壳”

shell的使用方式:
交互式——命令行:人工干预,智能化程度高,逐条解释执行,效率低
非交互式——脚本:需要提前设计,智能化难度大,批量执行,效率高,方便在后台静悄悄的运行

切换shell环境:
通过usermod ,chsh更改登陆shell
手动执行目标shell程序
[[email protected] ~]# cat /etc/shells
/bin/sh (多数unix默认的shell)
/bin/bash (多数linux默认使用的shell)
/sbin/nologin (非登陆shell)
/bin/dash
/bin/tcsh
/bin/csh
/bin/ksh

bash基本特性:
命令行环境回顾
快捷键,tab键补齐
命令历史
命令别名
标准输入输出
重定向
管道操作

/etc/profile (环境变量和启动程序)
/etc/bashrc (函数和别名)
/root/.bash_profile
/root/.bashrc

编写及执行脚本:
#!/bin/bash
for i in {1..10}
do
useradd hydra$i 2>>uerror.log >/dev/null
echo "123" |passwd --stdin user$i 2>>perror.log >/dev/null
done

添加执行权限:
[[email protected] ~]# chmod +x x.sh
[[email protected] ~]# ./x.sh
hail hydra!!!!!

没授权时执行:(因为解释器权有权限)
[[email protected] ~]# chmod -x x.sh
[[email protected] ~]# bash x.sh
[[email protected] ~]# sh x.sh
(以上两个开子进程)
[[email protected] ~]# source x.sh
[[email protected] ~]# . x.sh
(以上两个不开子进程)

脚本规范思路:
#!脚本声明(使用哪种解释器)
#注释信息(步骤,思路,用途,变量含义等)
可执行的语句

脚本创建:
新建文本文件
添加可执行的脚本语句(命令行)
添加x权限
[[email protected] ~]# vim x.sh (创建文件)
#!/bin/bash (声明解释器)
#步骤,思路,用途,变量含义
echo "hail hydra!!!!!" (写脚本语句)
[[email protected] ~]# chmod +x x.sh (添加执行权限)
[[email protected] ~]# ./x.sh
hail hydra!!!!!

——————————————————————————————

shell变量是弱类型的变量

变量:
变量名称=值
变量名称:字母,数字,_,但不能以数字开始

定义/赋值变量
变量名=变量值
[[email protected] ~]# x=12 定义变量x,赋值12
[[email protected] ~]# var1=redhat 定义变量var1,赋值redhat
相关注意事项:
若指定的变量名已存在,相当于为此变量名重新赋值,
等号两边不要有空格
变量名由字母/数字/下划线组成,区分大小写
变量名不能以数字开头,不要使用关键字和特殊字符

防止冲突可以用花括号(区分大小写)
$变量名
${变量名}
[[email protected] ~]# a=7

查看变量的值:
echo $变量的名称
[[email protected] ~]# echo $a
7

取消变量:
unset 变量的名称
[[email protected] ~]# unset a
[[email protected] ~]# vim b.sh
#!/bin/bash

useradd $1 (($1变量 $2变量)
echo "$2" |passwd --stdin $1

[[email protected] ~]# ./b.sh hydra Anonymous
更改用户 hydra 的密码 。
passwd: 所有的身份验证令牌已经成功更新。

变量的分类:
环境变量:变量名通常都是大小写,油系统维护,用来设置工作环境
位置变量:bash内置,存储执行脚本时提供的参数
预定义变量:bash内置,一类有特殊用途的变量,可直接调用,但不能直接赋值或修改
自定义变量:由用户自主设置,修改及使用

变量配置文件
/etc/profile ~/.bash_profile
相关操作
env:列出所有的环境变量
set:列出所有变量
常见的环境变量:
PWD PATH USER LOGNAME UID SHELL HOME PS1 PS2.... ....

预定义变量:
用来保存脚本程序的执行信息
直接使用这些变量,不能直接为这些变量赋值
变量名:
$0:当前所在的进程或脚本名
$$:当前运行进程的pid号
$?:命令执行后的返回状态,0正常,非0表示失败
$#:已加载的位置变量的个数
$*:所有位置变量的值

位置变量:
在执行脚本时提供命令行参数
表示为$n,n为序号
$1,$2,... ..${10},${11},...
[[email protected] ~]# vim c.sh
#!/bin/bash
echo $1 ${10} (查看第1,10个位置参数)
[[email protected] ~]# ./c.sh 1 2 3 4 5 6 7 8 9 10 11
1 10

实例:
快速添加用户,并设置好登陆密码
在执行脚本时,提供用户名作为参数
将登陆密码设为123456
[[email protected] ~]# vim x.sh
!/bin/bash
useradd $1 2> /tmp/err.log
echo 123456 | passwd --stdin $1 &> /dev/null

——————————————————————————————————————

扩展赋值操作
区分三种定界符
双引号"":允许扩展,以$引用其他变量
单引号‘‘:禁用扩展,即便$也视为普通字符
反撇号``:放命令,执行命令,取出命令的结果
(双引号,单引号都是引整体,但是单引号屏蔽特殊符号)

[[email protected] run]# echo "$USER"
root
[[email protected] run]# echo ‘$USER‘
$USER
[[email protected] run]# echo `date`.txt
2017年 07月 25日 星期二 07:04:09 CST.txt

用tar的形式备份/var/log,备份到/opt下
[[email protected] opt]# tar -czf log_`date +%Y%m%d`.tar.gz /var/log/

————————————————————————————————————

时间: 2024-10-25 19:19:42

shell脚本基础1 概述及变量的相关文章

linux——Shell 脚本基础篇(变量类型,变量操作,定义,运算与逻辑关系)

Shell 脚本基础 1.变量 什么是变量 #a=1 # echo $a 1 变量:可以变化的量 1.2变量名称注意事项 变量名不能以数字开头 不能与系统中已有的环境变量重名,尽量不要全部使用大写,尽量不要使用"_"下划线开头 最好做到见名知意 不能使用程序中的保留字,列如if,for等 1.3变量类型 字符型 数值型 整型浮点型 布尔型 条件是和否 #$echo $a 引用 abc 撤销 unset +(变量名)a 1.4变量操作 * 设置变量 * 引用变量 * 撤销变量 单引号和双

shell脚本基础、变量

shell脚本基础 知识要点 掌握Shell脚本的基础知识 学会使用Shell变量 学会编写简单的Shell脚本 Shell脚本的应用环境 学习shell脚本的基本流程 看.想.写 shell脚本用在什么地方 编写常用系统维护工具菜单 重要的性能参数.进程和日志分析 自动实现数据备份计划 自动批量搭建特定系统环境 防火墙自动配置脚本 服务器的配置文件安全比对 对批量设备进行远程巡检 Shell脚本的组成元素 shell脚本的基本组成 声明和注释* 系统命令 文本处理工具(grep.cut.sed

关于shell脚本基础编程第四篇

shell脚本基础编程第四篇本章主要内容:函数 函数 function:             function 名称 { 命令 ; } 或 name () { 命令 ; }           定义 shell 函数.               创建一个以 NAME 为名的 shell 函数.当作为一个简单的命令启用时,           NAME 函数执行调用 shell 的上下文中的 COMMANDs 命令.当 NAME           被启用时,参数作为 $1...$n 被传递

Linux shell脚本基础学习详细介绍(完整版)一

Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提.1. Linux 脚本编写基础◆1.1 语法基本介绍 1.1.1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序.在这个例子中我们使用/bin/sh来执行程序. 当编辑好脚本时,如果要执行该脚本,还必须使其可执行. 要使脚本可执

Linux shell脚本基础学习详细介绍(完整版)二

详细介绍Linux shell脚本基础学习(五) Linux shell脚本基础前面我们在介绍Linux shell脚本的控制流程时,还有一部分内容没讲就是有关here document的内容这里继续. Linux shell脚本基础已经被分成好几个部分了,这里对控制流程的内容也就马上讲完了,这是最后一部分关于here document,这里举例稍微有点复杂,我们慢慢来分析这个复杂Linux shell脚本. 6. Here documents 当要将几行文字传递给一个命令时,here docu

shell脚本基础学习(转)

看到别人的学习总结,觉得不错转了过来(转自TryFly) 一.shell脚本基础 ? ?shell脚本是利用shell的功能所写的一个程序,这个程序是使用纯文本文件,将一些shell的语法与指令写在里面,然后用正则表达式,管道命令以及重定向向等功能,以达到我们所想要的处理目的.它的基本用途有: 1.自动化常用命令 2.执行系统管理和故障排除 3.创建简单的应用程序 4.处理文本或文件 ... 二.创建shell脚本 第一步.使用文本编辑器来创建文本文件 第一行必须包括shell 声明序列:#!

shell脚本基础进阶(四)----作业

20150913-15作业 1.描述shell程序的运行原理(可附带必要的图形说明) shell脚本基础进阶(一)----shell介绍 2.总结shell编程中所涉及到的所有知识点(如:变量.语法.命令状态等等等,要带图的哟) shell脚本基础进阶(二)----变量及运算符 3.总结课程所讲的所有循环语句.条件判断的使用方法及其相关示例:(if (jpg|png is not exist):echo "You say a XX") shell脚本基础进阶(三)----流程控制语句

Linux运维之道之ENGINEER1.4(shell脚本基础)

ENGINEER1.4 SHELL脚本基础 认识shell环境 bash shell的使用方式 交互式: --人工干预,智能化程度高 --逐条解释执行,效率低 非交互式: --需要提前设计,智能化难度大: --批量执行,效率高: --方便在后台及悄悄地执行: 什么是shell脚本:提前设计可执行语句,用来完成特定任务的文件 --解释型程序 --顺序,批量执行 规范shell脚本的一般组成: #!环境声明 #注释文本 可执行代码 ----------------------------------

续写vim,shell脚本基础编辑,read命令,if与case判断语句,文件查找方式,压缩与解压,

一. Vim续写 ?1.命令扩展模式的位置定界 ??起始位置 cmd 终止位置???Cmd:????y复制????d删除????Gu变大写????gu变小写??例如:0y$命令意味着:????0 先到行头????Y 从这里开始拷贝????$ 拷贝到本行行尾最后一个字符????Ye 从当前位置拷贝到本单词的最后一个字符 ?2.扩展命令模式:地址定界 ? ?# 具体第#行,? ?#1,#2 从开头数第#1行到第#2行? ?#1,+#2 从开头数的第#1行到从第#1行开始数的第#2行? ? ?例:2,