一、普通变量

1.使用变量之前通常并不需要事先声明,通常赋值的时候创建他们
2.默认所有的变量都被看做字符串,并且以字符串存储
3.变量区分大小写
4.变量名前面添加$符号来访问变量,赋值的时候只需要使用变量名
5.如果字符串中包含空格,就必须用引号括起来
6.等号两边不能有空格

#!/bin/sh

myvar="Hi there"

echo $myvar
echo "$myvar"
echo '$myvar' #不会发生替换
echo \$myvar #不会发生替换 echo Enter some text
read myvar
echo '$myvar' now equals $myvar salutation=+ exit $./variable
Hi there
Hi there
$myvar
$myvar
Enter some text 输入:Hello World
$myvar now equals Hello World +

二、环境变量和参数变量

$0                shell脚本的名称
$1, $2,...        脚本程序的参数
$#                传递给脚本的参数的个数
$*                在一个变量中列出所有的参数,各个参数之间用环境变量IFS中的第一个字符分割开。
                如果IFS被修改了,那么$*将命令行分割为参数的方式也会改变。
$@                $*的一个变体,不适用IFS变量,即使IFS为空,参数也不会挤在一起。        
$$                脚本的进程号,脚本程序通常会用它来生成一个唯一的临时文件,如/temp/tempfile_$$

$HOME            用户的家目录
$PATH            冒号分割的用来搜索命令的目录列表
$PS1            命令提示符,通常是$字符,在bash中可以设置更复杂的值,比如:[\u@\h \W]$就是一个流行的默认值,
                给出用户名、机器名、当前目录名、提示符$
$PS2            二级提示符,用来提示后续的输入,通常是>字符
$IFS            输入域分隔符,读取输入时,它给出用来分割单次的一组字符,通常时候空格,换行符,制表符

$@和$*的区别

$ IFS=''
$ set foo bar bam $ echo "$@"
foo bar bam $ echo "$*"
foobarbam $ unset IFS $ echo "$*"
foo bar bam

shell学习笔记之变量(一)的更多相关文章

  1. shell学习笔记3---shell变量

    Shell变量的定义.赋值和删除 脚本语言在定义变量时通常不需要指明类型,直接赋值就可以,Shell 变量也遵循这个规则. 在 Bash shell 中,每一个变量的值都是字符串,无论你给变量赋值时有 ...

  2. Shell学习笔记 - 环境变量配置文件(转)

    一.source命令 功能:在当前bash环境下读取并执行配置文件中的命令 1. 命令格式 source 配置文件  或  . 配置文件 2. 命令示例 [root@localhost ~]# sou ...

  3. Shell学习笔记 - 环境变量配置文件

    一.source命令 功能:在当前bash环境下读取并执行配置文件中的命令 1. 命令格式 source 配置文件  或  . 配置文件 2. 命令示例 [root@localhost ~]# sou ...

  4. shell 学习笔记3-shell变量扩展

    一.特殊位置参数变量 1.特殊位置参数变量 在shell中比如:$0.$1.$#,等被称为特殊位置参数变量,当命令行.函数.脚本执行等处传递参数时,就需要使用位置参数变量 参数说明如下: 2.示例$1 ...

  5. Shell 学习笔记之变量

    变量 知识点 变量赋值和输出 variable="hello world" echo $variable 或者 echo ${variable} (最后格式统一使用后者) 只读变量 ...

  6. shell学习笔记

    shell学习笔记 .查看/etc/shells,看看有几个可用的Shell . 曾经用过的命令存在.bash_history中,但是~/.bash_history记录的是前一次登录前记录的所有指令, ...

  7. [转帖][Bash Shell] Shell学习笔记

    [Bash Shell] Shell学习笔记 http://www.cnblogs.com/maybe2030/p/5022595.html  阅读目录 编译型语言 解释型语言 5.1 作为可执行程序 ...

  8. shell学习笔记汇总

    1.shell脚本中函数使用 函数定义在前,调用在后,顺序反了就没有效果了.函数调用为:函数名 参数列表 函数内部通过以下变量访问函数的参数:shell脚本函数中: $0: 这个脚本的名字 $n: 这 ...

  9. shell 学习笔记2-shell-test

    一.字符串测试表达式 前面一篇介绍:什么是shell,shell变量请参考: shell 学习笔记1-什么是shell,shell变量 1.字符串测试表达式参数 字符串需要用""引 ...

随机推荐

  1. Android:Dialog中隐藏键盘的注意事项

    场景:弹出一个Dialog.里面有一个EditText.用来输入内容.由于输入时.须要弹出键盘.所以当Dialog消失时.键盘要一起隐藏. 如今我们做一个自己定义的Dialog MyDialog ex ...

  2. LightOj 1123-Trail Maintenance(最小生成树:神级删边)

    1123 - Trail Maintenance PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 32 MB ...

  3. Maven的settings.xml文件结构之mirrors

    Maven的远程库提供大量构件,供Maven项目直接下载使用.对于一个Maven项目,如果没有特别声明,默认使用Maven的central库,url如下: http://repo.maven.apac ...

  4. wso2esb安装及helloworld

    1.系统环境 Ubuntu12.04    192.168.0.97    root/password找管理员 Ubuntu12.04    192.168.0.99    root/password ...

  5. 【Oracle】锁

    Oracle所有锁的分配和管理都是数据库管理系统自动完成的,不需要用户进行干预. v$lock表说明 字段 描述 ADDR Address of lock state object KADDR Add ...

  6. HTTP协议详解之User Agent篇

    •User Agent:用户代理 指浏览器他的信息包括硬件平台.系统软件.应用软件和用户个人偏好.用户代理不仅仅指浏览器,还包括搜索引擎. •为什么所有浏览器的User Agent都带有Mozilla ...

  7. 揭开JDBC的神秘面纱,让JDBC数据库的连接参数不再神秘

    1.JDBC是什么? JDBC(Java DataBase Connectivity)java数据库连接 2.JDBC可以做什么?        简单地说,JDBC 可做三件事:与数据库建立连接.发送 ...

  8. OpenWrt的开机启动服务(init scripts)

    参考 https://wiki.openwrt.org/doc/techref/initscripts 以一个简单的例子来说明 #!/bin/sh /etc/rc.common # Example s ...

  9. Centos 7 minimal install 后的基础配置

    Centos 7 基础设置: 修改默认语言: 不再是修改 /etc/sysconfig/i18n, 而是要修改 /etc/locale.conf, 以及 /etc/yum/pluginconf.d/l ...

  10. mysql之InnoDB内存管理

    InnoDB缓冲池是通过LRU算法来管理page的.频繁使用的page放在LRU列表的前端,最少使用的page在LRU列表的尾端,缓冲池满了的时候,优先淘汰尾端的page. InnoDB中的LRU结构 ...