shell命令(一)

什么是shell?

Shell是一个应用程序,它连接了用户和Linux内核,让用户能够更加高效、安全、低成本地使用Linux内核,这就是Shell的本质。

shell与Linux系统关系图

shell命令(一)

shell也能够编程

  1. 有if...else选择结构,case...in 开关语句,for、while、until循环
  2. 变量、数组、字符串、注释、加减乘除、逻辑运算等概念;
  3. 函数,包含用户自定义的函数和内置函数(例如printf\export\eval等)

shell在运维中的地位

下面手链形象地展示了Shell在运维工作中的地位

shell命令(一)

先看一个简单的shell程序

#!/bin/bash
# This is to show what a example looks like.

echo "This first example"
echo # This inserts an empth line in output.
echo "We are currently in the following directory"
pwd 
echo
echo "This directory contains the following files"
ls

 注释:

#!/bin/bash #!跟shell命令的完全路径。作用:显示后期命令以哪种shell来执行这些命令。如不指shell,以当前shell作为执行的shell

# shell 中以#开头表示,整行就被当作一个注释。执行时被忽略。

总结:

创建shell程序的步骤

第一步:创建一个包含命令和控制结构的shell文件
第二步:修改这个文件的权限使它可以执行,使用chmod u+x
第三步:执行
    方法一:./{文件名}
    方法二:使用决定路径 /root/../{文件名}
    方法三:bash {文件名}

Shell变量

变量是shell传递数据的一种方法。变量使用来表示每个值的符号名

例:x=1

Shell 有两种变量:临时变量和永久变量。

临时变量:是shell程序内部定义的,其使用范围仅限于定义它的程序,对于其它程序不可见。

永久变量:是环境变量,其值不随shell脚本的执行结束而消失。

例:如:$PATH

shell命令(一)

# 用作运行某个命令的时候,本地查找不到某个命令或文件,会到这个声明的目录中去查找

用户定义变量:由字母或下划线打头。由字母、数字或下划线组成,并且大小写字母意义不同。变量名长度没有限制。

使用变量值时,要在变量名前加上前缀“$”。

例如:1VAR 就是非法变量。

变量赋值:赋值号“=”两边应没有空格

例如:A=123

例如:将一个命令的执行结构赋值给变量

shell命令(一)

shell命令(一)

shell命令(一)

可以利用变量和其它字符组成一个新的字符串。

shell命令(一)

列出所有变量

set 

过滤

shell命令(一)

给变量赋值多个单词

shell命令(一)

单引号和双引号的区别

单引号之间的内容原封不动地指定给了变量,

双引号取消了空格的作用,保留特殊符号的含义

双引号:

shell命令(一)

单引号:

shell命令(一)

删除变量

shell命令(一)

位置变量和特殊变量

位置变量:Shell 解释执行用户命令时,将命令行的第一个字作为命令名,而其它名字作为参数。由出现在命令行上的位置确定的参数称为位置参数

特殊变量:有些变量是一开始执行Script脚本时就会设定,且不能被修改,但我们不叫它只读系统变量,而叫它特殊变量。这些变量当一执行程序时就有了,以下是一些特殊变量

$*:这个程序的所以参数
$#:这个程序的参数个数
$$:这个程序的PID
$!:执行上一个后台程序的PID
$?:执行上一个指令的返回值

 程序例子:

#!/bin/bash
echo "$*  表示这个程序的所以参数"
echo "$#  表示这个程序的参数个数"
touch /tmp/a.txt

echo "$$  表示当前程序的ID"
touch /tmp/b.txt &

echo "$!  执行上一个后台指令的PID"
echo "$$  表示程序的进程ID"

结果:

shell命令(一)

变量的使用:

#!/bin/bash

var1="abcd efg"
echo $var1

var2=1234
echo "The value of var2 is $var2"
echo $HOME
echo $PATH
echo $PWD

执行结果:

shell命令(一)

 

shell命令(一)

上一篇:eclipse定位类所在包的路径


下一篇:Android中launchMode模式详解