关于bash shell的相关整理与练习

  • 环境变量:可以在所有的用户进程中使用。登录进程是父进程,shell进程是子进程。父进程初始化环境变量,子进程就都可以使用了。对应的声明文件是:/etc/profile  、~/wuxiangdong/.bash_profile

    变量的声明方式,export JAVA_HOME=‘/usr/local/jdk7‘

  • 本地变量(局部变量) :作用域在一个shell,关闭终端,再开启一个,原来声明的变量不见了;变量设置为只读后不可废弃,不可修改。变量的声明方式:LOCALTEST=‘HELLO,BOY’echo$LOCALTEST。
  • 局部变量:作用域只对当前的代码段有效,local VARNAME=value。
  • 位置变量:$1,$2,$3,$4这样的变量,取参数的位置。
  • 特殊变量:

    $?上一个命令的状态返回值。

$#参数的个数

$*参数列表

[email protected]参数列表

$0命令本身 脚本本身

程序状态返回代码(0-255) 0: 正确执行 1-255:错误执行,1,2,127系统预留;

注意:

 set命令结果是与shell类型有关。

    env查询的是当前用户所有的环境变量的情况。

    export 查询的是当前导出成用户变量的shell变量。     

撤销变量:unset    

变量名称:

1、只能包含字母、数字和下划线,并且不能数字开头;

2、不应该跟系统中已有的环境变量重名;

3、最好做到见名知义; 

变量声明格式:

  1. declare -i SUM=0

    integer

  2. -x(声明成环境变量)
  3. let A=0;(声明算术变量)

测试脚本是否有语法错误:

bash -n 脚本 检查是不是有错误

bash -x 脚本:单步执行

3.shell编程基础

    1)shebang:魔数

#!/bin/bash

#开头的是注释行,是不执行的。

/dev/null :软件设备,bit bucket,数据黑洞。 

                        注意事项:

脚本在执行时会启动一个子shell进程;

命令行中启动的脚本会继承当前shell环境变量

系统自动执行的脚本(非命令行启动)就需要自我定义需要各环境变量;

 2)脚本的开始

 SHELL-1

1 #有没有bash结尾的用户,有显示出来,没有显示没有

2 #!/bin/bash

3 #

4 LINES=`grep "\<bash$" /etc/passwd | wc -l `

5 USERS=`grep "\<bash$" /etc/passwd | cut -d: -f1`

6 if [ $LINES -gt 0 ]; then

7    echo -n  "there are $USERS"

8 else

9    echo "no such user."

10 fi

11

提示:“引用”一个命令的执行结果,要使用命令引用;比如: RESAULTS=`wc -l /etc/passwd | cut -d: -f1`;

使用一个命令的执行状态结果,要直接执行此命令,一定不能引用;比如: if id user1一句中的id命令就一定不能加引号;

如果想把一个命令的执行结果赋值给某变量,要使用命令引用,比如USERID=`id -u user1`;

如果想把一个命令的执行状态结果保存下来,并作为命令执行成功与否的判断条件,则需要先执行此命令,而后引用其状态结果,如

id -u user1

RETVAL=$?

SHELL-2

给定一个文件,比如/etc/inittab

判断这个文件中是否有空白行;

如果有,则显示其空白行数;否则,显示没有空白行。

#!/bin/bash

LINES=`grep "^$" /etc/inittab|wc -l`

if [ $LINES -gt 0 ];then

echo "$LINES"

else

echo "NO Blank"

fi

SHELL-3

练习:写一个脚本

给定一个用户,判断其UID与GID是否一样

如果一样,就显示此用户为“good guy”;否则,就显示此用户为“bad guy”。

#!/bin/bash

USERNAME=user1

USERID=`id -u $USERNAME`

GROUPID=`id -g $USERNAME`

if [ $USERID -eq $GROUPID ]; then

echo "Good guy."

else

echo "Bad guy."

fi

如果不用id命令

#!/bin/bash

#

USERNAME=user1

if ! grep "^$USERNAME\>" /etc/passwd &> /dev/null; then

echo "No such user: $USERNAME."

exit 1

fi

USERID=`grep "^$USERNAME\>" /etc/passwd | cut -d: -f3`

GROUPID=`grep "^$USERNAME\>" /etc/passwd | cut -d: -f4`

if [ $USERID -eq $GROUPID ]; then

echo "Good guy."

else

echo "Bad guy."

fi

时间: 2024-10-07 21:47:24

关于bash shell的相关整理与练习的相关文章

linux bash shell常用命令整理

使用这些命令几乎能完成所有想要做的任务 命令 描述 alias 为指定命令定义一个别名 bg 以后台模式恢复作业的运行 bind 将键盘序列绑定到一个readline函数或宏 break 退出for.while.select.until循环 builtin 执行指定的shell內建命令 cd 将当前目录切换为指定的目录 caller 返回所有活动子函数调用的上下文 command 执行指定的命令,而不用通常的shell查找 compgen 为指定单词生成可能的补全匹配 complete 显示指定

Linux基础之bash shell介绍及基本特性

今天继续讲Linux基础知识,内容是关于bash shell的.分享以下bash shell的相关知识,例如基本特性等.  1.8)bash shell的介绍 1.8.1)什么是bash shell 概括地讲就是bash shell是一个命令解释器,与内核进行交互. bash shell是一个命令解释器,它在操作系统的最外层,负责用户程序与内核进行交互操作的一种接口,将用户输入的命令翻译给操作系统,并将处理后的结果输出至屏幕. 当我们使用远程连接工具连接linux服务,系统则会打开一个默认的sh

Learning The Bash Shell读书笔记(整理)

最近搞了一本书 Learning Bash Shell,发现有人已经写了阅读笔记,我就在这边整理一下 来自blog:http://blog.sina.com.cn/n4mine Learning The Bash Shell读书笔记(1)bash初识,通配符 Learning The Bash Shell读书笔记(2)重定向,管道,后台 Learning The Bash Shell读书笔记(3)特殊字符,引用,控制键 Learning The Bash Shell读书笔记(4)历史命令 Lea

linux杂记(十)?what is BASH Shell

first,what is shell?其实只要是碰过计算机的,对于OS(Operation System操作系统,不管是linux.unix.windows)有点概念的人大多都听过这个名词,因为只要有OS那么就离不开Shell.其实Shell就是将我们输入的指令与kernel(核心)的沟通,使kernel可以控制hardware硬件(例如声卡,网卡,显卡)来正确无误工作. 基本上,替我们工作的是[hardware],控制硬件的是[kernel],而我们user则是利用[shell]控制一些ke

Linux 常用命令解析及Bash Shell脚本用法示例

 摘要 Linux 命令是基于文本格式输入输出的一种程序,按照Unix哲学中强调的程序功能简单,输入宽松,输出严谨,各种程序组合可以具有更强大的功能,而具有这种灵活性的主要原因是Linux规定程序的输入输出必须坚持文件流格式,即文本格式,而这就是Linux系统的核心之一. 对于Bash,即Shell的一种,为现在主流Linux发行版本默认的命令行解释器,是一种功能强大的工具,可以实现对Linux支持的程序命令的组合,从而实现强大功能.类似于Window系统的bat文件,Bash具有更为强大的

8.11_Linux之bash shell脚本编程入门篇(一)

什么是bash shell脚本编程? 答:Linux里面有多种shell,而CentOS和redhat的默认shell是bash shell.至于shell脚本,这个跟windows操作系统里面的批处理文件有点像(.bat的文件).不知道大家还是否记得Linux的哲学思想吗?其中有那么两点点:由众多目的的单一应用程序组成:一个程序只做一件事,且做好:组合目的的单一的小程序完成复杂的任务.我觉得shell脚本编程就很好的体现了这个哲学思想.shell脚本利用shell的功能缩写的一个"程序&quo

Linux - Bash shell的功能;内建命令type

命令编修能力 (history): bash 的功能里头,相当棒的一个就是『他能记忆使用过的命令!』 这功能真的相当的棒!因为我只要在命令列按『上下键』就可以找到前/后一个输入的命令!而在很多 distribution 里头,默认的命令记忆功能可以到达 1000 个!也就是说, 你曾经下达过的命令几乎都被记录下来了. 这么多的命令记录在哪里呢?在你的家目录内的 .bash_history 啦! 不过,需要留意的是,~/.bash_history 记录的是前一次登陆以前所运行过的命令, 而至于这一

shell脚本相关笔记

书写一个shell脚本并使之执行的步骤: 1. 打开一个文件,以 #! bin/bash作为开头 2.在文件中写入一些正确可执行的shell语句 3.保存文件 4.更改文件权限,执行文件 一些小技巧: 如果想在系统中添加自己的命令,比如执行自己建好的shell脚本语句这样一条命令 实例: 1.创建文件cd.sh 内容为: #! bin/bash cd xxx/yyy/zzz 2.保存文件 3.执行文件./cd.sh 现在发现并没有能够打开我们想要打开的目录并进去. 原因是shell还有分父she

Linux 学习作业:认识bash shell

本次记录bash shell基础知识及bash变量功能,bash操作环境的配置内容,涉及解释什么是shell?.bash变量的定义和引用.怎样读入与设定bash的环境配置文件等. ? Shell的基本概念 1. Shell是什么? Linux系统由3个重要部分组成: w 内核(kernel) w Shell w 应用程序 内核真正在控制着计算机系统上的各种硬件与软件.功能包括进程管理.内存管理.设备管理.文件系统管理等等. 内核相当抽象,使用者不易和它直接通信,因此需要一个良好的接口,使得操作时