Linux下Bash编程之变量详解(一)

1.语言分类:

1.1.静态语言:编译型语言

强类型:变量在使用前,必须事先声明,甚至还需要初始化;

编写的程序事先转换成可执行格式

代表有:C、C++、JAVA、C#

动态语言:解释型语言

弱类型:变量用时声明,甚至不区分类型;

编写的程序边解释边执行

代表有: PHP、SHELL、python、perl

1.2.面向过程编程语言:代表有 Shell, C

1.3.面向对象编程语言: 代表有 JAVA, Python, perl, C++

结论:shell属于弱类型编程语言

2.shell编程各变量名称解释

变量:其实是内存空间,即叫命名内存空间

而内存:是编址的存储单元

变量类型:事先确定数据的存储格式和长度,有如下分类:

字符

数值:分整型和浮点型

布尔值:真、假

逻辑运算:与、或、非、异或

3.bash变量类型:

本地变量:set VARNAME=VALUE: 作用域为当前shell进程;

局部变量:local VARNAME=VALUE:作用域为当前代码段;

环境变量:作用域为当前shell进程及其子进程;

第一种表法方法:export VARNAME=VALUE

第二种表法方法:VARNAME=VALUE && export VARNAME

位置变量:$1, $2, ...表示返回参数的值

特殊变量:$?: 上一个命令的执行状态返回值;

程序执行,可能有两类返回值:

(1):程序执行结果

(2):程序状态返回代码(0-255)

0: 为正确执行

1-255:为错误执行,1,2,127系统预留;

引用变量:${VARNAME},括号有时可省略

撤消变量:unset VARNAME

查看当shell中变量:set  含环境和本地变量

查看当前shell中的环境变量有以下3个命令:

printenv  env   export

4.脚本:按需将一大堆简单小命令,结合流程控制机制实现复杂的源程序

shebang: magic number

注意:(1)脚本在执行时会启动一个子shell进程,命令行中启动的脚本会继承当前shell环境变量;

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

编码脚本基本格式如下:

#!/bin/bash

# 注释行,不执行

5.1 举例说明写一个如下创建用户脚本,完成以下任务:

1、添加user1用户,增加密码完成后不显示passwd命令所有输出信息

2、每个用户添加完成后,最好显示用户已经成功添加的提示信息;

5.1.1:vim useradd.sh 创建一个脚本文件:添加内容如下

#!/bin/bash

USERNAME=user1

useradd $USERNAME

echo "$USERNAME" | passwd --stdin $USERNAME &> /dev/null

echo "Add  $USERNAME sucessfully"

5.1.2:保存useradd.sh文件后

chmod a+x useradd.sh    增加执行权限

./useradd.sh          执行脚本创建用户

5.2 举例说明写一个如下删除用户脚本,完成以下任务:

1、删除user1用户,并且删除其家目录,不要显示输出结果;

2、用户删除成功后,最好显示用户已经成功删除的提示信息;

5.2.1:vim userdel.sh 创建一个脚本文件:添加内容如下

#!/bin/bash

USERNAME=user1

userdel -r $USERNAME &> /dev/null

echo "del user $USERNAME successfully"

5.2.2:保存userdel.sh文件后

chmod a+x userdel.sh   增加执行权限

./userdel.sh         执行脚本删除用户

时间: 2024-10-16 22:00:22

Linux下Bash编程之变量详解(一)的相关文章

linux下Bash编程循环语句特殊用法之编写脚本(十)

linux下Bash编程while语句特殊用法之编写脚本(十) 1.循环控制: break:中断整个循环语句,即退出循环后执行脚本后面的语句 continue:中断当前本次循环,提前进入下一轮循环 exit:结束脚本运行 2.while死循环,即当不知道循环多少次时 格式 : while :; do 循环语句 done 3.while从输入重定向文件中每行读取并赋值给read变量 格式:  while read LINE;do 循环语句 done < 路径文件 4.实例脚本 4.1.找出/etc

【转】Linux下Android ADB驱动安装详解

原文网址:http://blog.csdn.net/zhenwenxian/article/details/5901350 Linux下Android ADB驱动安装详解 概述 最近由于内置的合作商比较多,本人使用的Ubuntu系统好多厂商的Android手机都无法正确的识别,经过一番折腾,和查阅SDK,现把Linux下ADB驱动配置的方法和当中会遇到的相关问题的解决方法整理出来贡献给大家. Linux下使用手机USB调试模式连接ADB进行Android程序的调试,配置驱动没有Windows来的

Linux 下的dd命令使用详解

dd if=/dev/zero of=的含义是什么?Linux 下的dd命令使用详解     一.dd命令的解释 dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换. 注意:指定数字的地方若以下列字符结尾,则乘以相应的数字:b=512:c=1:k=1024:w=2 参数注释: 1. if=文件名:输入文件名,缺省为标准输入.即指定源文件.< if=input file > 2. of=文件名:输出文件名,缺省为标准输出.即指定目的文件.< of=output file >

[fw]Linux下tty/pty/pts/ptmx详解

基本概念: 1> tty(终端设备的统称):tty一词源于Teletypes,或者teletypewriters,原来指的是电传打字机,是通过串行线用打印机键盘通过阅读和发送信息的东西,后来这东西被键盘与显示器取代,所以现在叫终端比较合适.终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备. 2> pty(虚拟终端):但是如果我们远程telnet到主机或使用xterm时不也需要一个终端交互么?是的,这就是虚拟终端pty(pseudo-tty) 3> pts/ptm

【转】Linux 下搭建Postfix邮件服务器详解:

在我自己的服务器上面搭建了邮件服务器,为的是接下来写shell脚本进行报警监控.当服务器发生意外,可以及时发送邮件服务器到邮箱. 看了两个教程,按照两个教程来搭建的,感谢原作. Linux 下搭建Postfix邮件服务器详解: 1.首先关闭sendmail服务 service sendmail stop 2.chkconfig sendmail off(关闭开机自启动) 3.修改DNS正解文件,使DNS能够解析邮箱服务 添加下面两行 mail.zhubf.com. IN A           

linux下Bash编程组合测试及编写脚本(五)

linux下Bash编程组合测试及编写综合脚本(五) 1.Bash编程组合测试条件 -a: 与关系 -o: 或关系 !: 非关系 表示方法1:[ $# -gt 100 -a $# -le 500 ] 表示方法2:[ $# -gt 100 ] && [ $# -le 500 ] 2.编写一个任意添加与删除用户的脚本,要求如下: 2.1:如果脚本选项是--add:,将添加用户; 如果选项是--del,将删除用户,如果是--help显示帮助信息 2.2:脚本选项后面的参数可任意指定多个用户并且用

linux下文件打包、压缩详解

Linux平台下,有如下几种常见的压缩工具: ========================================================================= 工 具 文件扩展名 描述 ------------------------------------------------------------------------- bzip2 .bz2 采用Burrows-Wheeler块排序文本压缩算法和霍夫曼编码 compress .Z 原始的Unix文件压

【Linux学习】Linux下用户组、文件权限详解

原文地址:http://www.cnblogs.com/123-/p/4189072.html Linux下用户组.文件权限详解 用户组 在linux中的每个用户必须属于一个组,不能独立于组外.在linux中每个文件有所有者.所在组.其它组的概念 - 所有者 - 所在组 - 其它组 - 改变用户所在的组 所有者 一般为文件的创建者,谁创建了该文件,就天然的成为该文件的所有者 用ls ‐ahl命令可以看到文件的所有者 也可以使用chown 用户名 文件名来修改文件的所有者 文件所在组 当某个用户创

Linux 下的dd命令使用详解(摘录)

一.dd命令的解释 dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换. 注意:指定数字的地方若以下列字符结尾,则乘以相应的数字:b=512:c=1:k=1024:w=2 参数注释: 1. if=文件名:输入文件名,缺省为标准输入.即指定源文件.< if=input file > 2. of=文件名:输出文件名,缺省为标准输出.即指定目的文件.< of=output file > 3. ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节.