变量赋值和引用
2013-01-04 08:53
190 查看
Shell编程中,使用变量无需事先声明,同时变量名的命名须遵循如下规则:
首个字符必须为字母(a-z,A-Z)
中间不能有空格,可以使用下划线(_)
不能使用标点符号
不能使用bash里的关键字(可用help命令查看保留关键字)
需要给变量赋值时,可以这么写:
变量名=值
要取用一个变量的值,只需在变量名前面加一个$ ( 注意: 给变量赋值的时候,不能在"="两边留空格 )
#!/bin/sh
# 对变量赋值:
a="hello world" #等号两边均不能有空格存在
# 打印变量a的值:
echo "A is:" $a
挑个自己喜欢的编辑器,输入上述内容,并保存为文件first,然后执行 chmod +x first 使其可执行,最后输入 ./first 执行该脚本。其输出结果如下:
A is: hello world
有时候变量名可能会和其它文字混淆,比如:
num=2
echo "this is the $numnd"
上述脚本并不会输出"this is the 2nd"而是"this is the ";这是由于shell会去搜索变量numnd的值,而实际上这个变量此时并没有值。这时,我们可以用花括号来告诉shell要打印的是num变量:
num=2
echo "this is the ${num}nd"
其输出结果为:this is the 2nd
需要注意shell的默认赋值是字符串赋值。比如:
var=1
var=$var+1
echo $var
打印出来的不是2而是1+1。为了达到我们想要的效果有以下几种表达方式:
let "var+=1"
var=$[$var+1]
var=`expr $var + 1`#注意加号两边的空格,否则还是按照字符串的方式赋值。
注意:前两种方式在bash下有效,在sh下会出错。
let表示数学运算,expr用于整数值运算,每一项用空格隔开,$[]将中括号内的表达式作为数学运算先计算结果再输出。
Shell脚本中有许多变量是系统自动设定的,我们将在用到这些变量时再作说明。除了只在脚本内有效的普通shell变量外,还有环境变量,即那些由export关键字处理过的变量。本文不讨论环境变量,因为它们一般只在登录脚本中用到。
Shell里的流程控制
if 语 句
"if"表达式如果条件为真,则执行then后的部分:
if ....; then
....
elif ....; then
....
else
....
fi
大多数情况下,可以使用测试命令来对条件进行测试,比如可以比较字符串、判断文件是否存在及是否可读等等……通常用" [ ] "来表示条件测试,注意这里的空格很重要,要确保方括号前后的空格。
[ -f "somefile" ] :判断是否是一个文件
[ -x "/bin/ls" ] :判断/bin/ls是否存在并有可执行权限
[ -n "$var" ] :判断$var变量是否有值
[ "$a" = "$b" ] :判断$a和$b是否相等
执行man test可以查看所有测试表达式可以比较和判断的类型。下面是一个简单的if语句:
#!/bin/sh
if [ ${SHELL} = "/bin/bash" ]; then
echo "your login shell is the bash (bourne again shell)"
else
echo "your login shell is not bash but ${SHELL}"
fi
变量$SHELL包含有登录shell的名称,我们拿它和/bin/bash进行比较以判断当前使用的shell是否为bash。
还可以使用 test
选项
文件名
来测试,而测试结果使用echo $?来查看
选项有: -d
-f -w -r -x -L
数值测试的选项有: -eq =
-ne -qt >
-lt < -le <= -ge
>=
首个字符必须为字母(a-z,A-Z)
中间不能有空格,可以使用下划线(_)
不能使用标点符号
不能使用bash里的关键字(可用help命令查看保留关键字)
需要给变量赋值时,可以这么写:
变量名=值
要取用一个变量的值,只需在变量名前面加一个$ ( 注意: 给变量赋值的时候,不能在"="两边留空格 )
#!/bin/sh
# 对变量赋值:
a="hello world" #等号两边均不能有空格存在
# 打印变量a的值:
echo "A is:" $a
挑个自己喜欢的编辑器,输入上述内容,并保存为文件first,然后执行 chmod +x first 使其可执行,最后输入 ./first 执行该脚本。其输出结果如下:
A is: hello world
有时候变量名可能会和其它文字混淆,比如:
num=2
echo "this is the $numnd"
上述脚本并不会输出"this is the 2nd"而是"this is the ";这是由于shell会去搜索变量numnd的值,而实际上这个变量此时并没有值。这时,我们可以用花括号来告诉shell要打印的是num变量:
num=2
echo "this is the ${num}nd"
其输出结果为:this is the 2nd
需要注意shell的默认赋值是字符串赋值。比如:
var=1
var=$var+1
echo $var
打印出来的不是2而是1+1。为了达到我们想要的效果有以下几种表达方式:
let "var+=1"
var=$[$var+1]
var=`expr $var + 1`#注意加号两边的空格,否则还是按照字符串的方式赋值。
注意:前两种方式在bash下有效,在sh下会出错。
let表示数学运算,expr用于整数值运算,每一项用空格隔开,$[]将中括号内的表达式作为数学运算先计算结果再输出。
Shell脚本中有许多变量是系统自动设定的,我们将在用到这些变量时再作说明。除了只在脚本内有效的普通shell变量外,还有环境变量,即那些由export关键字处理过的变量。本文不讨论环境变量,因为它们一般只在登录脚本中用到。
Shell里的流程控制
if 语 句
"if"表达式如果条件为真,则执行then后的部分:
if ....; then
....
elif ....; then
....
else
....
fi
大多数情况下,可以使用测试命令来对条件进行测试,比如可以比较字符串、判断文件是否存在及是否可读等等……通常用" [ ] "来表示条件测试,注意这里的空格很重要,要确保方括号前后的空格。
[ -f "somefile" ] :判断是否是一个文件
[ -x "/bin/ls" ] :判断/bin/ls是否存在并有可执行权限
[ -n "$var" ] :判断$var变量是否有值
[ "$a" = "$b" ] :判断$a和$b是否相等
执行man test可以查看所有测试表达式可以比较和判断的类型。下面是一个简单的if语句:
#!/bin/sh
if [ ${SHELL} = "/bin/bash" ]; then
echo "your login shell is the bash (bourne again shell)"
else
echo "your login shell is not bash but ${SHELL}"
fi
变量$SHELL包含有登录shell的名称,我们拿它和/bin/bash进行比较以判断当前使用的shell是否为bash。
还可以使用 test
选项
文件名
来测试,而测试结果使用echo $?来查看
选项有: -d
-f -w -r -x -L
数值测试的选项有: -eq =
-ne -qt >
-lt < -le <= -ge
>=
相关文章推荐
- Linux Shell编程变量赋值和引用
- Shell编程之变量赋值和引用
- 结构体变量的引用和赋值
- python之局部变量引用赋值前的结果
- Shell编程之变量赋值和引用
- php中变量赋值是引用的例子
- 引用JAVA变量并赋值 w-wwftnanke-com
- Linux —— Shell编程之变量赋值和引用
- shell变量赋值与引用及扩展
- Linux Shell编程变量赋值和引用
- Linux Shell编程变量赋值和引用
- Linux —— Shell编程之变量赋值和引用
- PHP匿点源码之变量赋值与引用
- C++ 成员变量为引用类型和const类型,如何赋值
- 变量赋值和引用
- php变量引用赋值一些知识
- 引用类型变量的赋值
- 转载:写了10年Javascript未必全了解的连续赋值运算 --> 说明了JS中变量是引用
- 通过引用的方式为对象变量赋值
- JavaScritp 中变量的赋值和引用(续),在所有的children中查找某一id的节点并返回