笔记整理之 SHELL 变量

变量的类型:

1.自定义变量

定义变量: 变量名=变量值 变量名必须以字母或下划线开头,区分大小写   url1=test.3glong.com 
    引用变量: $变量名 或 ${变量名}
    查看变量: echo $变量名  set(所有变量:包括自定义变量和环境变量)
    取消变量: unset 变量名
    作用范围: 仅在当前shell中有效

示例:

2. 环境变量
定义环境变量: 方法一 export url2=test2.3glong.com 
                             方法二 export url1 将自定义变量转换成环境变量
引用环境变量: $变量名 或 ${变量名}
查看环境变量: echo $变量名  env   例如env |grep back_dir2
取消环境变量: unset 变量名
变量作用范围: 在当前shell和子shell有效
示例:

[[email protected] ~]# url1=test.3glong.com           #定义自定义变量
[[email protected] ~]# export url2=test2.3glong.com  #定义环境变量
[[email protected] ~]# /bin/bash             #再开启一个bash进入子shell
[[email protected] ~]# pstree
init─┬─abrtd
     ├─acpid
     ├─anacron
     ├─atd
     ├─auditd───{auditd}
     ├─console-kit-dae───63*[{console-kit-da}]
     ├─crond
     ├─cupsd
     ├─dbus-daemon
     ├─dhclient
     ├─hald─┬─hald-runner─┬─hald-addon-acpi
     │      │             └─hald-addon-inpu
     │      └─{hald}
     ├─login───bash
     ├─master─┬─pickup
     │        └─qmgr
     ├─5*[mingetty]
     ├─rpc.statd
     ├─rpcbind
     ├─rsyslogd───3*[{rsyslogd}]
     ├─sshd───sshd───bash───bash───pstree   #确认处于子shell
     ├─udevd───udevd
     └─xinetd
[[email protected] ~]# echo $url1           #输出自定义变量
                                                                #发现什么都没有
[[email protected] ~]# echo $url2
test2.3glong.com                                 #环境变量输出了
[[email protected] ~]# exit                          #退出当前子shell
exit
[[email protected] ~]# echo $url1
test.3glong.com                                     #自定义变量只能当前shell使用
[[email protected] ~]# echo $url2
test2.3glong.com
[[email protected] ~]# export url1               #转换i自定义变量为环境变量
[[email protected] ~]# /bin/bash
[[email protected] ~]# echo $url1               #进入子shell
test.3glong.com                                       #子shell也正常了

3. 位置变量
$1 $2 $3 $4 $5 $6 $7 $8 $9 ${10}

 [[email protected] ~]# vim test.sh
               
echo "第2个位置参数是$2"
echo "第1个位置参数是$1"
echo "第4个位置参数是$4"
echo "所有参数是: $*"
echo "所有参数是: [email protected]"
echo "参数的个数是: $#"
echo "当前进程的PID是: $$"
echo ‘$1=‘$1
echo ‘$2=‘$2
echo ‘$3=‘$3
echo ‘$*=‘$*
echo ‘[email protected]=‘[email protected]
echo ‘$#=‘$#
echo ‘$$=‘$$

4. 预定义变量
   $0    脚本名
   $* 所有的参数
   [email protected] 所有的参数
   $# 参数的个数
   $$ 当前进程的PID
   $!     上一个后台进程的PID
   $? 上一个命令的返回值 0表示成功
定义或引用变量时注意事项:
" "   弱引用
‘ ‘    强引用

[[email protected] ~]# school=emlog
[[email protected] ~]# echo "$school blog"
emlog blog
[[email protected] ~]# echo ‘$school blog‘
$school blog
时间: 2024-10-13 01:51:08

笔记整理之 SHELL 变量的相关文章

shell学习笔记之二(变量)

是一种弱类型的变量,声明时不需要指定其变量类型,也不需要遵循"先声明后使用",任何时候只要想用就可以用. 局部变量 在某个shell中生效的变量,在其他shell中无效.可以使用local内建命令来"显示"的声明局部变量 环境变量 shell脚本中,默认是全局的 预设的环境变量: BASH:说明bash的全路径 BASH_VERSION CDPATH:用于快速进入目录 EUID:记录当前用户的UID FUNCNAME :在用户函数体内部,记录当前函数体的函数名 HI

马哥学习笔记——shell变量类型

shell变量基础shell 变量是一种很"弱"的变量,默认情况下,一个变量保存一个串,shell不关心这个串是什么含义.所以若要进行数学运算,必须使用一些命令例如let. declare.expr.双括号等.shell变量可分为两类:局部变量和环境变量.局部变量只在创建它们的shell中可用.而环境变量则可以在创建 它们的shell及其派生出来的任意子进程中使用.有些变量是用户创建的,其他的则是专用shell变量.变量名必须以字母或下划线字符开头.其余的字符 可以是字母.数字(0~9

shell学习笔记(1)-变量

1.shell中的变量可以自定义,shell中使用变量时用$ name="shero"echo "hi ${name}" [email protected]ine:/home/shero/shell# ./test2.shhi shero 注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样.同时,变量名的命名须遵循如下规则: 首个字符必须为字母(a-z,A-Z). 中间不能有空格,可以使用下划线(_). 不能使用标点符号. 不能使用bash里的关

Shell 变量 学习笔记

Shell 教程Shell echo命令 Shell 变量 定义变量时,变量名不加美元符号($,PHP语言中变量需要),如: your_name="w3cschool.cc" 注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样.同时,变量名的命名须遵循如下规则: 首个字符必须为字母(a-z,A-Z). 中间不能有空格,可以使用下划线(_). 不能使用标点符号. 不能使用bash里的关键字(可用help命令查看保留关键字). 除了显式地直接赋值,还可以用语句给变量赋值

Linux学习笔记(二十四)管道符和作业控制、shell变量、环境变量配置文件

一.管道符和作业控制cat 1.txt |wc -l ; cat 1.txt |grep 'aaa'将前面命令的结果输入给后面的命令ctrl z 暂停一个任务.这时候任务隐藏到后台,通过fg可以重新吊起任务到前台运行jobs查看后台的任务bg[id]把任务调到后台fg[id]把任务调到前台上图中可以看到,后台运行并不影响继续输入命令,红线部分就是随机输入的字符fg +id 将命令从后台调至前台,这时候就可以ctrl +z中止命令命令后面加&直接丢到后台 二.shell变量PATH,HOME,PW

java笔记整理

Java 笔记整理 包含内容     Unix Java 基础, 数据库(Oracle jdbc Hibernate pl/sql), web, JSP, Struts, Ajax Spring, Ejb, java和模式 Linux/Unix笔记 inode :存储编号(地址) ls -k:查看磁盘分区 ls -li:显示当前文件的inode号. 目录的大小跟文件的大小有关,跟目录里的文件(目录)数量无关. 一行多个命令的话,中间用分号分开.如:pwd;cal;date last | grep

HBase笔记整理(一)

[TOC] HBase笔记整理(一) 行列式数据库 行式数据库: 可以简单的理解为类似传统的rdbmspaint这些数据,存放的数据都是结构化的数据. 行式数据库,是有利于全表数据的扫描,不利于只查询个别字段 列式数据库: 对行式数据库的一个改进,将部分列(或者说有关联的一些列)存放到单独的文件中,其他列存在其它多个文件中, 我们在进行查询的时候,只需要读取出这些常用列即可完成工作,这样,减少了文件IO的读写,提高读写的效率( 不用再想行式数据库进行全表扫描,然后过滤相关字段) 在行式数据库里面

Deep Learning(深度学习)学习笔记整理系列之(五)

Deep Learning(深度学习)学习笔记整理系列 [email protected] http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04-08 声明: 1)该Deep Learning的学习系列是整理自网上很大牛和机器学习专家所无私奉献的资料的.具体引用的资料请看参考文献.具体的版本声明也参考原文献. 2)本文仅供学术交流,非商用.所以每一部分具体的参考资料并没有详细对应.如果某部分不小心侵犯了大家的利益,还望海涵,并联系博主

Deep Learning(深度学习)学习笔记整理系列之(六)

Deep Learning(深度学习)学习笔记整理系列 [email protected] http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04-08 声明: 1)该Deep Learning的学习系列是整理自网上很大牛和机器学习专家所无私奉献的资料的.具体引用的资料请看参考文献.具体的版本声明也参考原文献. 2)本文仅供学术交流,非商用.所以每一部分具体的参考资料并没有详细对应.如果某部分不小心侵犯了大家的利益,还望海涵,并联系博主