Shell学习第一天

来源:互联网 发布:工业机器人您样编程 编辑:程序博客网 时间:2024/05/22 13:26
/***@author StormMaybin*@date 2017-01-06*/

生命不息。奋斗不止


前言:由于最近需要用shell写个脚本,去检测服务器,之前接触过linux简单的一些命令,了解过一些简单的shell知识,最后因为比较忙,还是放弃了,这次下定决心重新拿起shell,希望自己能坚持下去吧!fighting !


第一个shell程序

第一个shell小程序输出简单的HelloWorld

#!/bin/bash#@author StormMa#@date 2017-01-06#@describe 第一个shell小程序#----echo "Hello World"

第一行的#!/bin/bash是说明这个shell程序是由哪个shell解释执行。
这里写图片描述

Shell中变量总结

首先,在Shell中,变量分为:

  1. 用户自定义变量
  2. 环境变量
  3. 位置参数变量
  4. 预定义变量
用户自定义变量
#!/bin/bash#@author StormMa#@date 2017-01-06#@describe 用户自定义变量#定义变量,注意一点,shell中,这种定义方式定义的变量都是字符串类型name=StormMaage=20num1=1num2=3echo "$num1+$num2"#声明变量num是int类型declare -i num3num3=$num1+$num2echo $num3#取消num3的整形属性declare +i num3num3=$num1+$num2echo $num3

这里写图片描述

环境变量
#!/bin/bash#@author StormMa#@date 2017-01-06#@describe 环境变量#--------------echo "环境变量的使用"echo "current user's name = $LOGNAME"echo "current user's home = $HOME"echo "path = $PATH"echo "current path = $PWD"

这里写图片描述

BASH:
展开为调用bash实例时使用的全路径名
BASH_ENV:
和ENV一样,但只可在bash 2.0或更高版本中设置 16
BASH_VERSINFO:
使用2.0以上版本的bash时,展开为版本信息 16
BASH_VERSION:
展开为当前bash实例的版本号
CDPATH:
cd命令的搜索路径。它是以冒号分隔的目录列表,shell通过它来搜索cd命令指定的目标目录。例如.:~:/usr
COLUMNS:
设置该变量就给shell编辑模式和选择的命令定义了编辑窗口的宽度
DIRSTACK:
在2.0或以上版本的bash中,代表目录栈的当前内容
EDITOR:
内置编辑器emacs、gmacs或vi的路径名
ENV:
每一个新的bash shell(包括脚本)启动时执行的环境文件。通常赋予这个变量的文件名是.bashrc。ENV的值被解释为路径名前,shell先要对其进行参量扩展,命令替换和算术扩展
EUID:
展开为在shell启动时被初始化的当前用户的有效ID
FCEDIT
fc命令的默认编辑器名
FIGNORE:
执行文件名补全时可忽略的以冒号分隔的后缀列表。以FIGNORE中任一项为后缀的文件名被从匹配的文件名列表中排除。例如值为.o:~
FORMAT:
用来格式化在命令管道上的time关键字的输出
GLOBIGNORE:
在文件名扩展(称为globbing)时被忽略的文件列表
GROUPS:
当前用户所属的组
HISTCMD:
当前命令的历史编号或在历史清单中的序号。如果HISTCMD被复位,即使它随后就会重置,也将失去它的特殊属性
HISTCONTROL:
如果设置了ignorespace值,以一个空格符开头的行将不会进入历史清单。如果设置了ignoredups值,那和前一个历史行匹配的行不会进入。值ignoreboth结合了这两个选项。如果被复位,或设置成除了上面所说的任意其他值时,所有被解释器所读的行都将保存到历史清单中
HISTFILE:
指定保存命令行历史的文件。默认值是~/.bash_history。如果被复位,交互式shell退出时将不保存命令行历史
HISTFILESIZE:
历史文件能包含的最大行数。当给这个变量赋值后,如果有必要,历史文件将被截尾,以使包含的行数不超过这个数。默认值是500
HISTSIZE:
记录在命令行历史文件中的命令数。默认是500
HOME:
主目录。未指定目录时,cd命令将转向该目录
HOSTFILE:
包含一个格式和/etc/hosts一样的文件的名称,当shell需要补全一个主机名时将读取该文件。文件可以交互式更改。下一次试图补全主机名时,bash将新文件的内容添加到已经存在的数据库中
HOSTTYPE:
自动设置正在运行bash的机器的类型。默认值是由系统决定的
IFS:
内部字段分隔符,一般是空格符、制表符和换行符,用于由命令替换,循环结构中的表和读取的输入产生的词的字段划分
IGNOREEOF:
控制shell接收到单独一个EOF字符作为输入时的行为。如果设置,它的值就是shell退出前在一个输入行的最前面键入的连续EOF字符的个数。如果变量存在但没有一个数字值,或没有值,那么默认值是10。如果它不存在,EOF意味着给shell的输入的终止。它只在交互式shell中有效
INPUTRC:
readline启动文件的文件名,取代默认的~/.inputrc
LANG:
用来为没有以LC_开头的变量明确选取的种类确定locale类
LC_ALL:
忽略LANG和任何其他LC_变量的值
LC_COLLATE:
确定对路径名扩展的结果进行排序时的整理顺序,以及匹配文件名与模式时的范围表达式,等价类和整理序列的行为
LC_MESSAGES:
确定用于转换前面有一个”localeLINENOshell(1)MACHTYPEbashMAILMAILPATHMAILshellMAILWARNINGbash访Themailin[filenamewheremailisstored]hasbeenreadMAILCHECKshell()MAILPATHMAILFILE600(10)0shellMAILPATHshellshellYouhavemailOLDPWDOPTARGgetoptsOPTERR1getoptsOPTINDgetoptsOSTYPEbashPATHshellbash/usr/gnu/bin:/usr/local/bin:/usr/ucb:/usr/bin:PIPESTATUS退PPIDIDPROMPTCOMMANDPS1
PS2:
次提示符串,默认值是>
PS3:
与select命令一起使用的选择提示符串,默认值是#?
PS4:
当开启追踪时使用的调试提示符串,默认值是+。追踪可以用set –x开启
PWD:
当前工作目录。由cd设置
RANDOM:
每次引用该变量,就产生一个随机整数。随机数序列可以通过给RANDOM赋值来初始化。如果RANDOM被复位,即使随后再设置,它也将失去特定的属性
REPLY:
当没有给read提供参数时设置
SECONDS:
每次SECONDS被引用,将返回调用shell以来的秒数。如果给SECONDS赋一个值,以后引用返回的值将是赋值以来的秒数加上所赋的值。如果SECONDS被复位,即使随后再设置,它也将失去特定的属性
SHELL:
当调用shell时,它扫描环境变量以寻找该名字。shell给PATH、PS1、PS2、MAILCHECK和IFS设置默认值。HOME和MAIL由login(1)设置
SHELLOPTS:
包含一列开启的shell选项,比如braceexpand、hashall、monitor等
SHLVL:
每启动一个bash实例时将其加1
TMOUT:
设置退出前等待输入的秒数
UID:
展开为当前用户的用户ID,在shell启动时初始化

位置参数和预定义变量

# : 传递到脚本的参数个数* : 以一个单字符串显示所有向脚本传递的参数。与位置变量不同,此选项参数可超过 9个
$$ : 脚本运行的当前进程 ID号
$! : 后台运行的最后一个进程的进程 ID号
$@ : 与$#相同,但是使用时加引号,并在引号中返回每个参数
$- : 显示shell使用的当前选项,与 set命令功能相同
$? : 显示最后命令的退出状态。 0表示没有错误,其他任何值表明有错误。

#!/bin/bash#@author StormMa#@date 2017-01-06#@describe 位置参数#---------------echo "位置参数的使用"echo "参数的个数 = $#"echo "第一个参数是$1"echo "第二个参数是$2"echo "第三个参数是$3"echo "$1 $2 $3"echo "当前运行进程id是$$"#&是指后台运行sudo find / -name HelloWorld.sh &echo "后台进程的id是$!"kill $!

这里写图片描述

第一天笔记完。

2 0
原创粉丝点击