Shell脚本笔记(一)概念和变量

概念和变量

一、认识Shell脚本

Shell是一种命令解释器,作用是按次序执行(遇到子脚本,先执行子脚本的命令)用户输入的命令和程序。

Shell脚本语言是弱类型语言,与其他脚本语言相比的优势是可以处理偏操作系统底层的业务。

查看系统默认Shell:

#方法一:
echo $SHELL
#方法二:
grep root /etc/passwd

开发规范:

1)脚本第一行指定解释器

#!/bin/bash  

2)开头添加版本、版权等信息

3)脚本中尽量不要用中文

4)扩展名为.sh

5)脚本应放在固定路径下

执行方法:

1)bash script-name或者sh script-name: 脚本没有x权限或者脚本开头没有指定解释器时,可用此方法,此方法也是常见的方法。

2)path/script-name:当前路径下执行脚本,脚本要有x权限。

3)source script-name 或者 . script-name:在当前shell中直接运行脚本(其他方式会开启新的shell),因此可将该脚本中的变量或者函数传递到当前shell中。

二、Shell变量

shell变量不区分类型,如果要指定变量类型也可用declare定义。

一)环境变量

1)所有环境变量都是系统全局变量,可以用于所有子进程中。

2)环境变量用export导出,但如果不写入指定配置文件(~/.bash_profile,~/.bash,/etc/bashrc,/etc/profile),退出命令行会丢失。

3)环境变量应使用大写。

显示环境变量:

set:输出所有变量,包括全局变量、局部变量。

env:显示环境变量。

declare:所有变量,函数,整数等。

set -o:所有参数配置信息。

unset消除本地变量和环境变量:

unset JAVA_HOME

系统环境文件读取流程:

1.通过系统用户登录时的流程:

2.非登录Shell

只会加载~/.bashrc或者/etc/bashrc

二)普通变量

定义本地变量

1 var_name1=12345                           #为连续内容无需解析其他变量时可不用引号
2 var_name2=‘Do you have time.‘             #用单引号,原样输出
3 var_name3="No, I‘m working."              #会对其中变量进行解析,其他同单引号
4 var_name4=`ls -alh`                       #获取命令结果
5 var_name5=$(ls -l)                        #同上

三)特殊位置参数变量

常用特殊位置参数说明:

进程中的特殊状态变量:

用法:

1)判断命令、脚本和函数是否执行成功

2)执行" exit 数字 " ,会返回数字给$?

3)在函数中" return 数字 ",效果同上

四)bash shell系统内置变量命令:

1)echo:在屏幕上输出变量  命令格式 echo args  其中arges可以是变量和字符串组合

2)eval:

命令格式:eval args

功能:当shell程序执行到eval语句时,shell读入参数args,并将它们组合成一个新的命令。

3)exec:

命令格式: exec 命令参数

功能:在不创建新的子进程前提下,转去执行指定的命令,指定命令执行完毕后,终结该进程。

4)read:

命令格式: read  [参数] [变量名](该变量不能为特殊变量)
功能:从标准输入读取字符串等信息,传给shell内部定义的变量。

1 read -t 10 -p ‘Pls input the num: ‘ num

5)shilft:

命令格式:shilft—Shilft positional parameters

功能:在程序中每使用一次shilft语句,都会使所有位置参数向左移动一个位置。

6)exit:

退出shell,可选定一个数字作为返回值。

五)变量子串

六)特殊扩展变量

三、变量的数值计算

一)算术运算符

**:幂运算       其他略

二)算术运算命令

原文地址:https://www.cnblogs.com/Shadowplay/p/8257595.html

时间: 2024-09-29 16:59:13

Shell脚本笔记(一)概念和变量的相关文章

学习shell脚本笔记

1.if 是单分支语句,使用格式如下: if condition ; then statement -.. fi 2.if - else 是双分支语句,使用格式如下: if condition ; then statement -. else statement -. fi 3.if -elif-elif-else 是多分支语句,使用格式如下: if condition ; then statement -. elif condition ; then statement -.. elif co

LInux Shell 脚本笔记

*************************** list.txt : 目录 ******************************** 1. variable.sh2. condition.sh3. control.sh4. AndOr.sh5. statementBlock.sh6. function.sh7. command_1.sh8. old_version_set.sh9. new_version_set.sh10. command_2.sh11. command_3.s

shell学习笔记(1)-变量

1.shell中的变量可以自定义,shell中使用变量时用$ name="shero"echo "hi ${name}" [email protected]ine:/home/shero/shell# ./test2.shhi shero 注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样.同时,变量名的命名须遵循如下规则: 首个字符必须为字母(a-z,A-Z). 中间不能有空格,可以使用下划线(_). 不能使用标点符号. 不能使用bash里的关

shell脚本之编程规范与变量

shell脚本概念 将要执行的命令按顺序保存到一个文本文件,给该文件一个可执行权限,便可运行. shell脚本的构成 1.脚本申明 脚本声明是指明用哪个解释器来解释 2.注释信息 注释信息是指明这个脚本的一些说明信息.就知道这个脚本时干什么用的了,这个信息不执行 3.可执行语句 进行执行的一些命令 执行shell脚本的方式 1.绝对路径 2.相对路径 3.sh 脚本路径 4.source 脚本路径 注意:其中,绝对路径与相对路径实行shell脚本时,该脚本文件必须要有可执行权限.Source脚本

shell脚本笔记(原创不断记录)

今天开始自己的shell脚本练习,刚好公司有太服务器,要时间对数据的cp是按月的: 考虑:首先寻找规律,发现都放置在/opt/www/aaa/  里面有很多的2级和3级目录和文件,但我追踪要备份的是年月为文件名的格式:2015_06 这样的格式,首先我们不清楚这个目录下有多少这样的2015_06的子目录所以需要统计: find /opt/www/aaa -name 2015_06 查看了下我要备份的地方#!/bi#admin fengtaotao Email:23956580@qq.com #F

shell脚本基础1 概述及变量

shell概述:在linux内核与用户之间的解释器程序通常指/bin/bash负责指向内核翻译及传达用户/程序指令相当于操作系统的"外壳" shell的使用方式:交互式--命令行:人工干预,智能化程度高,逐条解释执行,效率低非交互式--脚本:需要提前设计,智能化难度大,批量执行,效率高,方便在后台静悄悄的运行 切换shell环境:通过usermod ,chsh更改登陆shell手动执行目标shell程序[[email protected] ~]# cat /etc/shells /bi

shell脚本中grep时关于变量带双引号的小问题

今天在写一个shell脚本的时候,有一个操作是使用grep命令在一个文件中搜索指定内容.指定内容存放在文件中,使用一个变量去获取文件中内容,再传到grep命令中去. 这段代码如下: for target in `cat content.txt`do     grep $target test.txt >>result.txtdone content.txt文本中的内容为: "域\[2\]" "域\[3\]" "域\[4\]" 因为使用

shell学习笔记之二(变量)

是一种弱类型的变量,声明时不需要指定其变量类型,也不需要遵循"先声明后使用",任何时候只要想用就可以用. 局部变量 在某个shell中生效的变量,在其他shell中无效.可以使用local内建命令来"显示"的声明局部变量 环境变量 shell脚本中,默认是全局的 预设的环境变量: BASH:说明bash的全路径 BASH_VERSION CDPATH:用于快速进入目录 EUID:记录当前用户的UID FUNCNAME :在用户函数体内部,记录当前函数体的函数名 HI

Shell脚本笔记 1

求取数学表达式 value=$[6/3] value=$((6/3)) let "value += 1" 定义局部变量 local value 定义整数 declare -i value 命令替换 value=`command` value=$(command) 系统变量 $n,第n个参数 $#,参数个数 $0,当前shell脚本名称 $?,前一命令退出状态 $*,以"参数1 参数2"返回 [email protected], 以"参数1" &q