shell基础笔记

变量

声明变量:

declare attribute variable

#attribute表示变量的属性,常见的属性如下:

# -i 将变量定义为整数;-a 变量声明为数组变量;-r 将变量声明为只读变量;-x 将变量设置成环境变量

局部变量:

在函数的内部通过local关键字定义局部变量,此外,函数的参数也是局部变量。作用域从被定义的地方开始,到函数的结束或被显示的删除,在函数外面使用局部变量会得到一个空值

全局变量:

可以在脚本中定义,也可以在函数中定义(不使用local关键字)。作用域从被定义的地方开始,一直到shell脚本结束或者被显示的删除

系统变量:

$n 表示传递给脚本的第n个参数

$0 当前脚本的名称

$# 命令行参数的个数

$? 前一个命令或者函数的返回状态码(也包括函数的返回值),执行成功返回0,否则,返回1

$* 以“参数1 参数2 参数3..”的形式返回所有参数的值

[email protected] 以“参数1”说“参数2”“参数3..”的形式返回所有参数的值

$$ 返回本程序的进程ID(PID)

$_ 保存之前执行的命令的最后一个参数

环境变量:

shell程序在运行时,都会接收一组变量,这组变量就是环境变量

#使用 set 命令列出所有的环境变量

PATH 命令搜索路径,以冒号为分隔符,当前目录不在系统路径里(这点与Windows不同)

HOME 用户主目录的路径名,是cd命令的默认参数

SEHLL shell的全路径名

PWD 当前的工作目录

HISTFILE 命令历史文件

LOGNAME 当前的登录名

TMOUT shell自动退出的时间,单位为秒,若设为0则禁止shell自动退出

变量赋值:

variableName=value

命令替换:

#指在shell程序中,将某个shell命令的执行结果赋给某个变量。

#在bash中,有以下两种语法可以进行替换

variableName=‘command‘

variableName=$(command)

#赋值号“=”的左右两边不能直接跟空格,否则shell会将其视为命令

引用变量:

${variableName}或$variable

间接变量引用:

var=name

name=John

${!var}与${name}的效果相同

清除变量:

unset variableName

特别注意:

单引号括起来的的字符都作为普通字符出现

双引号括起来的字符,除“$”“\”“‘”(单引号)和“"”(双引号)之外,其余字符作为普通字符对待

反引号括起来的字串被shell解释成命令,在执行时,shell首先执行该命令,并以它的标准输出结果取代整个反引号部分

------------------------------------------------------------------------------------------

条件测试(test命令和[命令):

#条件测试中的指定条件为真时,条件测试的返回值为0;为假时,返回值为非0值

#test命令

test expression

#[命令

#为了增强程序可读性,shell要求在条件表达式后面追加一个右方括号]来与前面的[的命令配对

#条件表达式与左右方括号之间必须都保留一个空格

[ expression ]

#如果expression是一个字符串,则 -n 判断字符串是否是非空;-z 判断字符串是否是空串,使用“=”和“!=”判断两个字符串是否相等

#如果expression是一个文件名,

#则 -e(或-a) 判断文件是否存在;-r、-w、-x判断文件是否存在,且是否可读、可写、可执行;-b、-c、-d、-L判断文件是否存在,且是否为块、字符目录、链接文件

#如果expression是一个由逻辑与、逻辑或、逻辑非构成的表达式,则 !表示逻辑非;-a 表示逻辑与;-o 表示逻辑或

------------------------------------------------------------------------------------------

if语句:

if expression

then

statement1

statement2

...

else

statement3

statement4

...

fi

或:

if expression

then

statement1

statement2

...

elif expression2

then

statement3

statement4

...

elif expression3

then

statement5

statement6

...

else

statement7

...

fi

#在shell中,有一个特殊的命令,称为空命令,表示方法是一个冒号“:”,该命令不做任何事情,但是它的退出状态永远是0

exit语句:

#exit语句的基本作用是终止shell程序的执行,可带一个可选的参数,用来指定程序退出时的状态码

exit status

------------------------------------------------------------------------------------------

case语句:

case variable in

value1)

statement1

...

statement2;;

value2)

statement3

...

statement4;;

*)

statement5

...

statement6;;

esac

------------------------------------------------------------------------------------------

for循环:

for variable in {list}

do

statement1

statement2

...

done

#list是一个列表,可以是一系列数字或字符串,元素间用空格隔开,如果使用字符串做列表元素,则外面的大括号可以省略

# {1..8} 表示1-8的简写

# {1..100..5} 表示1-100间,从1开始,每次递增5,即1,6,11,16...

# ${arrayName[*]} 表示数组arrayName的全部元素

不带列表的for循环:

#shell从命令行获取条件列表,以下三种形式等价

for variable     for variable in [email protected]    for variable in $*

do                    do                             do

statement1        statement1                statement1

statement2        statement2                statement2

...                       ...                               ...

done                done                         done

类C风格的for循环:

for ((expression1;expression2;expression3))

do

statement1

statement2

...

done

------------------------------------------------------------------------------------------

util循环:

util expression

do

statement1

statement2

...

done

------------------------------------------------------------------------------------------

while循环:

while expression

do

statemnet1

statement2

...

done

------------------------------------------------------------------------------------------

函数的定义:

function functionName()

{

statement1

...

}

#function可以省略

------------------------------------------------------------------------------------------

别名的设定与删除:

alias name="command"

unalias name

------------------------------------------------------------------------------------------

算数运算:

expr、$((...))、$[...]和let

#expr是一个shell命令,可以计算摸个表达式的值

expr expression

举例:

#先计算2和6的差,然后再乘以12,并把计算结果赋给变量result

#一定要注意运算符(幂运算“**”)左右的空格,且expr不能计算幂运算

result=`expr \( 2 - 6 \) \* 12`

result=$(( 1 + 2 ))

result=$[ 1 + 2 ]

let n=n + 1   (还是 let n=n+1  ?)

------------------------------------------------------------------------------------------

cat 查看文件内容:

cat fileName

# -n 显示文本的行号

cat -n fileName

# grep -n "" fileName和上一行的作用相同

---------------------------------------------------------------------------------

echo 输出文本

echo [options] string

#如果要输出的文本是由多个单词组成的,则可以使用双引号或者单引号将其引起来。

#如果不用引号引起来,则echo命令将一个字符串根据空格分割成多个字符串输出了

# -n 禁止echo语句执行完成后自动附加换行符

# 转义字符 \c 禁止继续输出文本

echo `command`

#echo可以将shell命令执行结果显示出来,且需要使用反引号将命令引用起来

#将echo命令显示的信息覆盖到目标文件中

echo string > fileName

#将echo命令显示的信息追加到目标文件的末尾

echo string >> fileName

------------------------------------------------------------------------------------------

rev 反转每行字符的顺序

rev [files]

#files表示要处理的文件的文件名列表,如果是多个文件,则文件名之间用空格隔开



时间: 2024-10-10 04:18:44

shell基础笔记的相关文章

Linux学习笔记——Shell基础(八)

+++++++++++++++++++++++++ +++++Shell基础+++++++++++++++++++++++++++++++ 1. Shell概述 Shell定义: Shell 是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动.挂起.停止甚至编写一些程序. Shell还是一个功能相当强大的编程语言,易编写.调试.Shell是解释执行的脚本语言,在Shell中可以直接调用Linux系统命令. Shell分类: Bo

shell基础二十篇 一些笔记

shell基础二十篇 转自 http://bbs.chinaunix.net/thread-452942-1-1.html 研讨:Bash 内建命令 read read -p "how old r u? " ageecho $ageread -p "some words? " -a wordsecho ${words[*]}read -p "Password: " -s passwd echo $passwd read -t 5 authecho

我的LINUX基础笔记

Linux系统管理      1 Day   2014.5.23 su -name   切换用户passwd 密码   更改密码gnome-terminal    伪CLI   桌面终端程序1.查看内核版本uname -r    2.查看红帽系统版本cat /etc/redhat-rdlease3.查看LINUX标准分发版信息  lsb_release4.查看网卡的IP,MAX       ifconfig                       ifconfig eth 10.0.0.10

php代码审计基础笔记

出处: 九零SEC连接:http://forum.90sec.org/forum.php?mod=viewthread&tid=8059 ---------------------------------------------------------- team:xdsec&90sec author:wilson blog:http://blog.wils0n.cn/ 文章链接:wilson's blog_php代码审计基础笔记[求人气~~] ----------------------

【Linux系列】【基础版】第四章 Shell基础之正则表达式

4. Shell基础之正则表达式     4.1 正则就是一串有规律的字符串         4.1 grep              4.1.1 格式: grep [-cinrvABC] 'word' filename             4.1.2 -c //count,表示行数             4.1.3 -i //不区分大小写             4.1.4 -n  //显示行号             4.1.5 -r  //遍历所有子目录             4

java String 类 基础笔记

字符串是一个特殊的对象. 字符串一旦初始化就不可以被改变. String s = "abc";//存放于字符串常量池,产生1个对象 String s1=new String("abc");//堆内存中new创建了一个String对象,产生2个对象 String类中的equals比较字符串中的内容. 常用方法: 一:获取 1.获取字符串中字符的个数(长度):length();方法. 2.根据位置获取字符:charAt(int index); 3.根据字符获取在字符串中

Linux之shell基础

Shell基础 一.shell概述 1) shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell来启动.挂起.停止甚至是编写一些程序. 我们输入的abc...24个字符是通过shell对照ASCII码翻译成二进制来让计算机识别的.我们从操作界面上输入命令,这个命令回车之后把此命令对照ASCII码翻译成指定的二进制,通过shell翻译成计算机内核能识别的二进制,然后内核调用硬件来处理,处理完之后再通过shell反馈给用户. 2)

网络基础笔记——OSI七层模型

OSI七层模型 由于整个网络连接的过程相当复杂,包括硬件.软件数据封包与应用程序的互相链接等等.如果想要写一支将联网全部功能都串连在一块的程序,那么当某个小环节出现问题时,整只程序都需要改写.所以我们将整个网络分成数层,每层都有自己独立的功能,而且每层的代码都可以独立撰写,因为相互之间不会干扰.如此一来,当某个小环节出现问题时,只要将该层的代码改写即可.并且这样可以让整个网络层次更加的清晰. 在网络上传输信息就像是一个发包裹的过程,从己方的应用程序开始往第七层的包裹里塞数据,再依次塞到第一层的包

【Linux系列】【基础版】第三章 Shell基础知识

3. Shell基础知识     3.1 Shell的由来         3.1.1 Bourne Agin Shell         3.1.2 其他的shell, 有 zsh, ksh等     3.2 查看有没有shell         3.2.1 yum list | grep zsh         3.2.2 ls /root/.bash_history         3.2.3 echo $HISTSIZE -> vi /etc/profile 修改HISTSIZE的值 -