定义变量时,变量名不加美元符号($),如:

variableName="value"

注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。

删除变量

使用 unset 命令可以删除变量。语法:

unset variable_name

变量被删除后不能再次使用;unset 命令不能删除只读变量。

特殊变量列表
变量 含义
$0 当前脚本的文件名
$n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。
$# 传递给脚本或函数的参数个数。
$* 传递给脚本或函数的所有参数。
$@ 传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。
$? 上个命令的退出状态,或函数的返回值。
$$ 当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。

$* 和 $@ 的区别

$* 和 $@ 都表示传递给函数或脚本的所有参数,不被双引号(" ")包含时,都以"$1" "$2" … "$n" 的形式输出所有参数。

但是当它们被双引号(" ")包含时,"$*" 会将所有的参数作为一个整体,以"$1 $2 … $n"的形式输出所有参数;"$@" 会将各个参数分开,以"$1" "$2" … "$n" 的形式输出所有参数。

脚本实例:

#!/bin/sh
echo "\$*=$*"
echo "\$@=$@"
echo "参数数量\$#=$#"
for i in "$*"
do
echo ${i}
done
for j in "$@"
do
echo ${j}
done
运行 后边加上参数 ds ss sasa ss sssdd 结果:
$*=ds ss sasa ss sssdd
$@=ds ss sasa ss sssdd
参数数量$#=5
ds ss sasa ss sssdd
ds
ss
asa
ss 可以使用的变量替换形式:
形式 说明
${var} 变量本来的值
${var:-word} 如果变量 var 为空或已被删除(unset),那么返回 word,但不改变 var 的值。
${var:=word} 如果变量 var 为空或已被删除(unset),那么返回 word,并将 var 的值设置为 word。
${var:?message} 如果变量 var 为空或已被删除(unset),那么将消息 message 送到标准错误输出,可以用来检测变量 var 是否可以被正常赋值。
若此替换出现在Shell脚本中,那么脚本将停止运行。
${var:+word} 如果变量 var 被定义,那么返回 word,但不改变 var 的值。
请看下面的例子:
#!/bin/bash
#如果没有设置则 提示 不给该变量赋值
echo ${var:-"Variable is not set"}
echo "1 - Value of var is ${var}"
#如果没有设置则 提示 给该变量赋值
echo ${var:="Variable is not set"}
echo "2 - Value of var is ${var}" unset var
#如果设置则 提示 不给该变量赋值
echo ${var:+"This is default value"}
echo "3 - Value of var is $var" var="Prefix"
echo ${var:+"This is default value"}
echo "4 - Value of var is $var"
#如果变量 var 为空或已被删除(unset),那么将消息 message 送到标准错误输出,可以用来检测变量 var 是否可以被正常赋值。
echo ${var:?"Print this message"}
echo "5 - Value of var is ${var}"

for语句:
#!/bin/sh
for i in c++ java c\# mysql
do
echo "I am good at ${i} Language"
done

最新文章

  1. continue语句在for语句和while语句中的区别
  2. 【Java EE 学习 47】【Hibernate学习第四天】【sesion】【一级缓存】【懒加载】
  3. Font Combiner – 自定义网页字体和图标生成工具
  4. 2D 《触不可及》
  5. Null modem接线
  6. 记录一点自己写的Php代码(1)取得任意种类,无限级下线
  7. 企业级搜索引擎Solr 第三章 索引数据(Indexing Data)[3]
  8. PHP:6种GET和POST请求发送方法
  9. Entity Framework 学习笔记(1)
  10. ngui点击与场景点击判断
  11. 快速配置SSH证书登录
  12. 图片组件——axure线框图部件库介绍
  13. win2008服务器,fastCGI完美设置教程
  14. lua中的require机制
  15. HTML5新特性: 自定义属性前缀data-以及dataset的使用
  16. LeetCode - 540. Single Element in a Sorted Array
  17. AI VGG16
  18. Tomcat web.xml配置参数详解
  19. SNMP扫描
  20. postman(一):主界面模块解析

热门文章

  1. canvas 俄罗斯方块
  2. hbulider 快捷键以及常用
  3. android 判断应用程序是否已安装
  4. innodb_space工具解析 MYSQL 页图解
  5. 【Qt】测测你对Qt的了解–Qt工具知多少
  6. Performing a thread dump in Linux or Windows--reference
  7. index页面数据展示为设定的命名
  8. JDK自带方法实现消息摘要运算
  9. Orcle数据库恢复
  10. Singleton设计模式 分类: 设计模式 2014-12-03 17:54 59人阅读 评论(0) 收藏