美文网首页
变量和参数

变量和参数

作者: rochestor | 来源:发表于2017-10-14 17:56 被阅读8次

变量名是其所指向值的一个占位符(placeholder)。引用变量值的过程我们称之为变量替换(variable substitution)

变量替换

$variable 这种写法是 ${variable} 的简化形式。在某些特殊情况下,使用 $variable 写法会造成语法错误,使用完整形式会更好

# 初始化变量时,赋值号 = 的两侧绝不允许有空格出现。
VARIABLE =value
# 脚本将会尝试运行带参数 "=value" 的 "VARIABLE " 命令
# 脚本将会尝试运行 "value" 命令
# 同时设置环境变量 "VARIABLE" 为 ""

hello="A B  C   D"
echo $hello   # A B C D
echo "$hello" # A B  C   D
# 正如我们所见,echo $hello 与 echo "$hello" 的结果不同。
# ====================================
# 字符串内引用变量将会保留变量的空白符。
# ====================================


#一个未被赋值或未初始化的变量拥有空值(null value)。注意:null值不等同于0。
if [ -z "$unassigned" ]
then
  echo "\$unassigned is NULL."
fi     # $unassigned is NULL.

变量赋值 【 "=" 前后不能有空格】

a=879
echo "The value of \"a\" is $a."

# 在 'for' 循环中赋值(隐式赋值)
echo -n "Values of \"a\" in the loop are: "
for a in 7 8 9 11
do
  echo -n "$a "
done

# 酷炫的赋值
a=`echo Hello!`   # 将 'echo' 命令的结果赋值给 'a'
a=$(echo Hello!)
# 注意在命令替换结构中包含感叹号(!)在命令行中使用将会失效,
# 因为它将会触发 Bash 的历史(history)机制。

bash变量是弱类型的

本质上说,Bash 变量是字符串,但在某些情况下,Bash 允许对变量进行算术运算和比较。决定因素则是变量值是否只含有数字
为了减轻脚本持续跟踪变量类型的负担,Bash 不允许变量声明

# 在执行算术运算时,Bash 通常将其空值的整数值设为0, 但是不要做这种事情
e=''                         # ...也可以是 e="" 或 e=
echo "e = $e"         # e =
let "e += 1"             # 空值是否允许进行算术运算?
echo "e = $e"         # e = 1

特殊的变量类型

局部变量

仅在代码块或函数中才可见的变量

环境变量

会影响用户及shell行为的变量

每当shell启动时,都会创建出与其环境对应的shell环境变量。改变或增加shell环境变量会使shell更新其自身的环境。子进程(由父进程执行产生)会继承父进程的环境变量

如果在脚本中设置了环境变量,那么这些环境变量需要被“导出”,也就是通知脚本所在的环境做出相应的更新。这个“导出”操作就是 export 命令

位置参数

$0, $1, $2, $3 ... 即命令行参数, 在 $9 之后的参数必须被包含在大括号中,如 ${10}, ${11}, ${12}

if [ -n "$1" ]              # 测试变量是否存在
then
 echo "Parameter #1 is $1"  # 使用引号转义#
fi


if [ $# -lt "$MINPARAMS" ]
then
  echo
  echo "This script needs at least $MINPARAMS command-line arguments!"
fi

# 通过 {} 获取最后一个参数
args=$#           # 传入参数的个数
lastarg=${!args}
# 这是 $args 的一种间接引用方式
也可以使用:       lastarg=${!#}

# shift 命令可以将全体位置参数向左移一位, 重新赋值, $1 <--- $2, $2 <--- $3, $3 <--- $4,以此类推

# 原先的 $1 将会消失,而 $0(脚本名称)不会有任何改变。如果你在脚本中使用了大量的位置参数,shift 可以让你不使用{大括号}助记法也可以访问超过10个的位置参数

until [ -z "$1" ]  # 直到访问完所有的参数
do
  echo -n "$1 "
  shift
done

唯爱与技术不可辜负

相关文章

  • 变量和参数

    变量名是其所指向值的一个占位符(placeholder)。引用变量值的过程我们称之为变量替换(variable s...

  • Ruby18

    参数、解包和变量 另外一种把变量传给脚本的方法 写一个可以接受参数的脚本 ARGV 就是所谓的参数变量,这个变量...

  • 前端面试题

    闭包1.函数嵌套函数--设计私有方法和变量。2.函数内部可以应用外部参数和变量--避免全局变量污染。3.参数和变量...

  • python 变量和参数

    对于变量和参数, x=3中x是变量,它不是参数,但是在函数y=3x+4中,x是变量,也是参数。下面这一段来自微软网...

  • SQL变量

    变量的定义 SQL Server中的变量就是一个参数,可以对这个参数进行赋值。 变量的分类 变量分为局部变量和全局...

  • Shell特殊变量

    Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数 特殊变量列表 变量 含...

  • 2020-04-06

    A、闭包特点 1.函数嵌套函数 2. 函数内部可以引用外部的参数和变量 3. 参数和变量...

  • js面对对象和jQuery的使用

    闭包 函数嵌套函数,内部函数可以引用外部函数的参数和变量,参数和变量不会被垃圾回收机制收回. 用处 1、将一个变量...

  • 自定义变量使用说明

    2018年6月23日 变量执行顺序 循环 》比较文本》比较数值 》其他有参数变量》无参数变量 有参数变量从左到右执...

  • 回顾部分基础前端技术问题

    1. 了解闭包 函数嵌套函数 ,函数内部可以引用外部的参数和变量 ,参数和变量不会被垃圾回收机制回收。既然...

网友评论

      本文标题:变量和参数

      本文链接:https://www.haomeiwen.com/subject/nuhfuxtx.html