shell脚本常用命令(HandBook_1)

shell及其他解释型语言的一般格式?

 #!/bin/bash            #shell脚本的首行格式
 #!/usr/bin/python  #python脚本的格式
 #!/usr/bin/perl        #perl脚本的格式
 #Description:      #"#"开头的单个井字号是注释符,其后内容不当做脚本程序执行
 COMMAND            #脚本的编程内容部分,命令的堆砌,单一命令的组合完成复杂任务

怎样使得定义的变量生效?

1.~]# . /etc/profile        # 点后跟定义变量文件
2.~]# source /etc/profile   #直接在当前shell生效

什么是位置变量?

 用来描述参数位置的变量.
 $0:代表脚本本身的名字
 $1:脚本的第一个参数
 $2:脚本的第二个参数
 ...
 ${10}:脚本的第10个参数    #注:从第十个开始以后要加大括号
 $*:脚本所有参数,以一个整体字符串存储
 [email protected]:脚本所有参数,以单个参数作为一个整体存储
 $#:脚本所有参数的总个数

如何定义一个变量?

1.declare -i        #定义整型
        -x      #定义环境
        -r      #只读变量
2.export variable=expression #定义环境变量

变量如何引用?

1.$variable     #$后跟变量名
2.${variable}   #可加大括号

如何在脚本中调用命令的执行结果?

1.$(command)    #命令的执行结果可赋值给变量
2.`command`     #反引号同样是命令的执行结果

怎样得知系统定义了哪些变量?

1.set           #查看系统定义的所有变量
2.env/printenv  #查看定义的所有环境变量

该怎样取消一已定义好的变量?

1.unset variable#取消或者删除变量
  注:variable=   #变量赋值为空不等同于变量被取消

查看bashell的版本?

echo $BASH_VERSION

几个常见的环境变量:

MAIL:存储mail文件
MAILCHECK:隔多长时间巡检一次并发送mail
SHLVL:当前处于多少层shell
RANDOM:软件模拟实现随机数变量

1           Shell中的特殊符号

1.1           $  美元符号。用来表示变量的值。如变量NAME的值为Mike,则使用$NAME就可以得到“Mike”这个值。

1.2          #  井号。除了做为超级用户的提示符之外,还可以在脚本中做为注释的开头字母,每一行语句中,从#号开始的部分就不执行了。

1.3           “”  双引号。shell不会将一对双引号之间的文本中的大多数特殊字符进行解释,如#不再是注释的开头,它只表示一个井号“#”。但$仍然保持特殊含义。(在双引号中的$加变量名,即:$PARAM_NAME,依然会转换成变量的值。)

1.3.1     双引号对于某些特殊符号是不起作用的, 例如:”,$,\,`(反引号)

1.3.2     双引号和单引号不能嵌套。即:echo ‘””’  输出””,  echo “’’” 输出’’

1.4           ‘’  单引号。shell不会将一对单引号之间的任何字符做特殊解释。(在双引号中的$加变量名,即:$PARAM_NAME,不会转换成变量的值。)

1.4.1     echo “$HOME”    (结果:/home/xiongguoan)

1.5          ``  倒引号。命令替换。在倒引号内部的shell命令首先被执行,其结果输出代替用倒引号括起来的文本,不过特殊字符会被shell解释。

1.5.1     echo ‘$HOME’    (结果:$HOME)

1.6          \  斜杠。用来去掉在shell解释中字符的特殊含义。在文本中,跟在\后面的一个字符不会被shell特殊解释,但其余的不受影响。

1.7          []中括号, 主要是用来测试条件的,通常放在if语句的后面。 (不过还是不太明白),但是中括号本身不会在测试语句执行后消失。

1.7.1     echo [$HOME]   (结果:出现错误)

1.7.2     echo [$HOME ]   (结果:[/home/xiongguoan ]) (注意:HOME后面有空格哦。)

1.7.3     echo [$HOME –eq ‘/xiong’]  (结果:[/home/xiongguoan –eq /xiong])

1.8          {}大括号,主要是和$符号配合,作为字符串连接来使用

1.8.1     echo ${HOME}ismydir   (结果:/home/xiongguoanismydir)

2           预定义的变量

2.1          特殊变量

$      shell变量名的开始,如$var

|      管道,将标准输出转到下一个命令的标准输入

$#     记录传递给Shell的自变量个数

#      注释开始

&      在后台执行一个进程

?     匹配一个字符

*      匹配0到多个字符(与DOS不同,可在文件名中间使用,并且含.)

$-     使用set及执行时传递给shell的标志位

$!     最后一个子进程的进程号 

$?     取最近一次命令执行后的退出状态(返回码)

$*     传递给shell script的参数

[email protected]     所有参数,个别的用双引号括起来

$0     当前shell的名字

$n     (n:1-) 位置参数

$$     进程标识号(Process Identifier Number, PID)

>      输出重定向

  <      输入重定向

  >>      输出重定向(追加方式)

  []     列出字符变化范围,如[a-z]

2.2          代值变量

* 任意字符串 

? 一个任意字符 

[abc] a, b, c三者中之一 

[a-n] 从a到n的任一字符 

2.3          特殊字符的表达

\b 退回  
\c 打印一行时没有换行符 这个我们经常会用到  
\f 换页  
\r 回车  
\t 制表  
\v 垂直制表  
\\ 反斜线本身 

2.4          其他字符

2.4.1     分号

; 表示一行结束

2.4.2     圆括号

() 表示在新的子shell中执行括号内的命令(这样可以不改变当前shell的状态。)

但是圆括号在单/双引号内失去作用,只作为普通字符。

2.4.3     花括号

2.4.3.1    分割命令的用法

与圆括号相似,但是:1. 花括号内的命令在当前shell中执行;2.花括号必须作为命令的第一个字符出现。

2.4.3.2    引用变量的用法

在$后面,表示变量名的开始和结束

2.4.4     方括号

相当与test命令,用来执行测试条件,通常用在需要判断条件的语句后面,例如:if,while等等。

3           设置变量

3.1          格式:VARNAME=value (i.e. PARAM=’hello’)

3.2          注意:

3.2.1     等号的前后不能有空格

3.2.2     如果变量的值是一个命令的执行结果,请加上反引号(`)。

4           引用变量

4.1          $VARNAME

4.1.1     e.i.  echo $HOME   (结果:/home/xiongguoan)

4.2          变量默认值

4.2.1     在引用一个变量的时候可以设定默认值。如果在此之前,该变量已经设定了值,则此默认值无效。如果此时变量没有被设定值,则使用此默认值(但是没有改变此变量的值)。

4.2.2     echo Hello ${UNAME:-there}     #其中there是UNAME的默认值

4.2.3     其他关于默认值与判读变量的方法:

利用大括号表示变量替换


表示形式


说明


${VARIABLE}


基本变量替换。大括号限定变量名的开始和结束


${VARIABLE:-DEFAULT}


如果VARIABLE没有值,则这种表示形式返回DEFAULT的值


${VARIABLE:=DEFAULT}


如果VARIABLE没有值,则这种表达形式返回DEFAULT的值。另外,如果VARIABLE没有设置,则把DEFAULT的值赋予它


${VARIABLE:+VALUE}


如果VARIABLE被设置,则这种表示形式返回VALUE;否则,返回一个空串


${# VARIABLE}


这种表示形式返回VARIABLE值的长度,除非VARIABLE是* 或者@在为*或者@的特殊情况下,则返回[email protected]所表示的元素的个数。要记住,$ @保存传给该脚本的参数清单


${VARIABLE:?MESSAGE}


如果VARIABLE没有值,则这种表示形式返回MESSAGE的值。Shell也显示出VARIABLE的名字,所以这种形式对捕获得错误很有用

4.2.4     注意:

4.2.4.1    使用${VALIABLE:?MESSAGE},如果发现此变量此时没有值,则脚本停止运行并显示行号和变量名称。 主要用于调试。

4.2.4.2     

5           位置变量

5.1          使用$1,$2,$3…$9,${10},${11}…来代表输入的参数。其中$0代表被执行的命令或者脚本的名字。$1,$2…代表输入的第1,2…个参数

5.2          例子:

# cat count.sh#!/bin/sh

A=$1             # 将位置$1的数值读入,并赋给变量A

B=$2             # 将位置$2的数值读入,并赋给变量B

C=$[$A+$B]       # 将变量A与B的值相加,将结果赋给C

echo $C          # 显示C的数值

结果:

# ./count.sh  3  6

9

# ./count.sh 34  28

62

5.3          [email protected]和$*代表参数的列表,$#代表参数的数量 (不知道[email protected]和$*之间的差别)

6           运算符和优先级

Shell运算符和它们的优先级顺序


级别


运算符


说明


13


-, +


单目负、单目正


12


!, ~


逻辑非、按位取反或补码


11


* , / , %


乘、除、取模


10


+, -


加、减


9


<< , >>


按位左移、按位右移


8


< =, > =,  < , >


小于或等于、大于或等于、小于、大于


7


= = , ! =


等于、不等于


6


&


按位与


5


^


按位异或


4


|


按位或


3


&&


逻辑与


2


| |


逻辑或


1


=, + =, - =, * =, /=, % =, & =, ^ =, | =, << =, >> =


赋值、运算且赋值

原文地址:https://www.cnblogs.com/jieran/p/8459482.html

时间: 2024-11-01 16:06:32

shell脚本常用命令(HandBook_1)的相关文章

Shell 脚本常用命令

Shell脚本是Linux开发工作中常用的工具,但是我一直没有找到一个适合自己的简明扼要的HandBook.在工作过程中整理了一下,贴在这里已备查看. 1           Shell中的特殊符号 1.1           $  美元符号.用来表示变量的值.如变量NAME的值为Mike,则使用$NAME就可以得到“Mike”这个值. 1.2          #  井号.除了做为超级用户的提示符之外,还可以在脚本中做为注释的开头字母,每一行语句中,从#号开始的部分就不执行了. 1.3    

shell 脚本 常用命令

Shell脚本是Linux开发工作中常用的工具,但是我一直没有找到一个适合自己的简明扼要的HandBook.在工作过程中整理了一下,贴在这里已备查看. 1           Shell中的特殊符号 1.1           $  美元符号.用来表示变量的值.如变量NAME的值为Mike,则使用$NAME就可以得到“Mike”这个值. 1.2          #  井号.除了做为超级用户的提示符之外,还可以在脚本中做为注释的开头字母,每一行语句中,从#号开始的部分就不执行了. 1.3    

shell脚本常用命令(HandBook_2)

8            逻辑判断 8.1          if 8.1.1     单格式与嵌套 if 条件表达式  then #当条件为真时执行以下语句  命令列表  else #为假时执行以下语句  命令列表  fi  if 语句也可以嵌套使用   if 条件表达式1  then  if 条件表达式2  then  命令列表  else  if 条件表达式3  then  命令列表  else  命令列表  fi  fi  else  命令列表  fi  8.1.2     多分支格式

shell脚本常用命令:expect

expect :是基于tcl的相对简单的一个免费脚本编程工具语言 用于实现自动和交互式任务程序进行通信,无需人工干预.比如:ssh ftp等,这些程序正常情况下需要手工与它们进行交互,而是用expect就可以模拟人工交互的过程,实现自动和远端程序交互,从而达到自动化的目的. 支持:Unix.linux和Windows平台 1) expect程序工作流程:spawn启动进程àexpect期待关键字àsend向进程发送字符à退出结束 2) expect 软件安装: 配置yum,然后执行 yum in

shell脚本常用脚本:if判断

shell脚本常用脚本:if判断 str1 = str2 当两个串有相同内容.长度时为真 str1 != str2 当串str1和str2不等时为真 -n str1 当串的长度大于0时为真(串非空) -z str1 当串的长度为0时为真(空串) str1    当串str1为非空时为真 [ "2006.01.23" \> "2005.03.01" ] && echo dayu || echo budayu int1 -eq int2 两数相等为

shell脚本常用脚本:for循环

shell脚本常用脚本:for循环 wheil 很多循环可以用for循环替换 for循环语法结构 for 变量名 in 变量取值列表 do 指令 done for ((exp1;exp2;exp3)) do 指令 Done 脚本实例:for  99乘法表 #!/bin/bash #Date       :2016-11-22 15:04:12 ##date "+%Y-%m-%d %H:%M:%S" #Author   :jorbabe #Mail       :[email prote

shell脚本wc命令详解!!需求输出结果

wc命令用来打印文件的文本行数.单词数.字节数等(print the number of newlines, words, and bytes in files).在Windows的Word中有个"字数统计"的工具,可以帮我们把选中范围的字数.字符数统计出来.Linux下的wc命令可以实现这个 功能.使用vi打开文件的时候,底下的信息也会显示行数和字节数. 常用参数 格式:wc -l <file> 打印指定文件的文本行数.(l=小写L) 以下参数可组合使用. 参数:-c,

linux操作系统-vim和shell脚本常用知识总结

HOST=$(/bin/hostname)将()里的命令执行后的结果赋值给HOST变量 #------------------------------------------------^M /etc/rc.d/  level3的用户login后, 将自动启动一个指定的shell  # ---------------------------------------------  $?  对上一次命令执行成功与否成功$?为0  判断文件是否存在且是否为文件 [ -f file ] 判断文件是否存在

Makefile Shell 脚本;sed命令

1. 在Makefile中想使用shell脚本,需要添加"@"符号,例如: @if [ -d xxx ]; then \                        //-d 判断是否存在,在shell中,用[]号代替括号 rm -rf xxx;  \ fi; @cp -fv  xxx  xxxx     //-f 删除已经存在的目标文件而不提示  -v  cp命令将告诉用户正在做什么 例:  cp -fv temp temp2 显示: 'temp'  ->  'temp2'