shell编程之变量详解

bash中的变量的种类

1.本地变量 : 生效范围为当前shell进程;对当前shell之外的其他shell进程,包括当前shell的子shell进程均无效

变量赋值: name=‘value‘

使用引用value:

(1) 直接写字符 name="root"

(2)变量引用 name="$USER"

(3)命令引用 name=`command`,name=$()

变量引用: ${name},$name

显示已定义的所有变量: set

删除变量: unset name

2.环境变量 : 生效范围为当前shell进程及其子进程fFs

变量声明,赋值:

export name ="value"

declare -x name="value"

变量引用: $name , ${name}

显示所有环境变量:

export

env

printenv

删除: unset name

3.局部变量 : 生效范围为当前shell进程中的代码片段(通常指函数)

4.位置变量 : $1,$2,...来表示,用于让脚本代码中调用通过命令行传递给它的参数

5.特殊变量:

$? 上一次退出程序的退出值

$0 : 执行的脚本的文件名

$* : 代表""$1c$2c$3c$4"",其中c为分隔字符,默认为空格键,代表$1 $2 $3 $4

[email protected] : 代表"$1" ,"$2 ","$3" ,"$4" 之意,每个变量都是独立的,一般记忆[email protected]

$*和[email protected]在被双引号包起来的时候才会有差异

在双引号引起来的情况:

$*: 将所有的参数认为是一个字段

[email protected]: 所有的参数每个都是独立的字段

在没有双引号的情况下$*和[email protected]是一样的

示例:判断给出文件的行数

linecount="$(wc -l |$1 |cut -d " " -f1)"

echo "$1 has $linecount lines"

实例:

写一个脚本测试$*和[email protected]显示结果的个数

1.$*和[email protected]带引号

#!/bin/bash
test() {
echo "$#"
}
echo ‘the number of parameter in "[email protected]" is ‘$(test "[email protected]")
echo ‘the number of parameter in "$*" is ‘$(test "$*")

运行结果

[[email protected] shells]$ bash 2.sh  a b c d
the number of parameter in "[email protected]" is 4
the number of parameter in "$*" is 1

2..$*和[email protected]不带引号

#!/bin/bash
test() {
echo "$#"
}
echo ‘the number of parameter in "[email protected]" is ‘$(test [email protected])
echo ‘the number of parameter in "$*" is ‘$(test $*)

运行结果

[[email protected] shells]$ bash 2.sh  a b c d
the number of parameter in "[email protected]" is 4
the number of parameter in "$*" is 4

由测试结果可以看出带引号的$*输出结果是一个字段而带引号的[email protected]输出的参数每个都是独立的字段

时间: 2024-12-20 09:11:33

shell编程之变量详解的相关文章

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编程

Shell编程之---正则表达式详解

正则表达式详解 普通字符:只是字面的意思 元字符:超过字面意思的意义 基本正则表达式元字符及其意义 * #0个或多个在*字符之前的那个普通字符 .               #匹配任意字符 ^         #匹配行首 $         #匹配行尾 $$ #执行上一条命令 !$ #上一条命令的最后一个参数,例如是/etc/passwd,继续对该参数操作,可以为 cat !$ []        #匹配字符集合 \          #转义符 \{n\}      #匹配前面字符出现n次 \

Shell学习之Bash变量详解(二)

Shell学习之Bash变量详解 目录 Bash变量 Bash变量注意点 用户自定义变量 环境变量 位置参数变量 预定义变量 Bash变量 用户自定义变量:在Bash中由用户定义的变量. 环境变量:这种变量中主要保存和系统操作环境相关的数据. 位置参数变量:这种变量主要是用来向脚本当中传递参数或数据的,变量名不能自定义,变量作用是固定的. 预定义变量:是Bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的. Bash变量注意点 1.变量名称可以由字母.数字和下划线组成,但是不能以数字

iOS网络编程(六) NSURLSession详解

昨夜浏览Demo的时候,看到别人请求网络数据用的是NSURLSession,当时就在想这里什么,怎么没有用过,引起了我的好奇心,遂去百度-谷歌-官方文档一一查看,有了一定的了解,原来NSURLSession是iOS7中新的网络接口,它与咱们熟悉的NSURLConnection是并列的. 查找资料,写了一个小Demo,大家可以看看,有什么不足的地方,可以留言帮我指出来. // // HMTRootViewController.m // // // Created by HMT on 14-6-7.

linux串口编程参数配置详解

1.linux串口编程需要的头文件 #include <stdio.h>         //标准输入输出定义 #include <stdlib.h>        //标准函数库定义 #include <unistd.h>       //Unix标准函数定义 #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h>          //文件控制定义 #incl

Java网络编程和NIO详解5:Java 非阻塞 IO 和异步 IO

Java网络编程和NIO详解5:Java 非阻塞 IO 和异步 IO Java 非阻塞 IO 和异步 IO 转自https://www.javadoop.com/post/nio-and-aio 本系列文章首发于我的个人博客:https://h2pl.github.io/ 欢迎阅览我的CSDN专栏:Java网络编程和NIO https://blog.csdn.net/column/details/21963.html 部分代码会放在我的的Github:https://github.com/h2p

Java网络编程和NIO详解6:Linux epoll实现原理详解

Java网络编程和NIO详解6:Linux epoll实现原理详解 本系列文章首发于我的个人博客:https://h2pl.github.io/ 欢迎阅览我的CSDN专栏:Java网络编程和NIO https://blog.csdn.net/column/details/21963.html 部分代码会放在我的的Github:https://github.com/h2pl/ Linux epoll实现原理详解 在linux 没有实现epoll事件驱动机制之前,我们一般选择用select或者pol

Java网络编程和NIO详解9:基于NIO的网络编程框架Netty

Java网络编程和NIO详解9:基于NIO的网络编程框架Netty 转自https://sylvanassun.github.io/2017/11/30/2017-11-30-netty_introduction/ netty是基于NIO实现的异步事件驱动的网络编程框架,学完NIO以后,应该看看netty的实现,netty框架涉及的内容特别多,这里只介绍netty的基本使用和实现原理,更多扩展的内容将在以后推出. 本系列文章首发于我的个人博客:https://h2pl.github.io/ 欢迎

编程常用设计模式详解--(上篇)(工厂、单例、建造者、原型)

参考来自:http://zz563143188.iteye.com/blog/1847029 一.设计模式的分类 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模式.享元模式. 行为型模式,共十一种:策略模式.模板方法模式.观察者模式.迭代子模式.责任链模式.命令模式.备忘录模式.状态模式.访问者模式.中介者模式.解释器模式. 二.设计模式的六大原则 1