shell编程echo、read、expr、declare摘记
echo
1.显示普通字符串:
echo "It is a test"
这里的双引号完全可以省略
echo It is a test 效果与上面一致
2.显示转义字符
echo "\"It is a test\""
结果将是: "It is a test"
同样,双引号也可以省略
3.显示变量
read name (输入OK)
echo "$name It is a test"
结果将是: OK It is a test
同样双引号也可以省略
如果变量与其它字符相连的话,需做如下处理:
read mouth (输入8)
echo "${mouth}-1-2009"
结果将是: 8-1-2009
变量赋值等号两边不能有空格
4.不换行(echo 默认是换行的)
echo -n "hello world"
5.双引号内的特殊字符如$等,可以保有原本的特性
var="lang is $LANG"
echo $var
输出结果是lang is en_US
6.单引号内的特殊字符则仅为一般字符(纯文本)
var='lang is $LANG'
echo $var
输出结果是lang is $LANG
7.在一串命令中,还需要通过其他的命令提供的信息,可以使用反单引号`命令` 或 $(命令)。特别注意反单引号是数字键1左边的那个按键,而不是单引号。
echo `date`
echo $(data)
结果将显示当前日期
在一串命令中,在``之内的命令将会被先执行
read
read [-pt] variable
-p : 后面可以接提示符
-t : 后面可以接等待的“秒数”,时间到未作任何操作,略过此命令
-s : 能够使read命令中输入的数据不显示在监视器上(实际上,数据是显示的,只是read命令将文本颜色设置成与背景相同的颜色)。
read之后不加任何参数,直接加上变量名称,那么下面就会主动出现一个空白行等待你的输入。
read -p "please input your name:" -t 30 name
expr
用于计算表达式的值(转自:http://www.cppblog.com/baby-fly/archive/2010/05/18/115685.html)
count=1
count=`expr $count + 1`
echo $count
输出为2
最好用$(())代替,效率更高
count=1
count=$(($count+1))
echo $count
也可以使用$[]
var=$[1+5]
echo $var //6
count=1
var=$[$count+1]
echo $var
expr length String1 返回String1长度
expr index String1 String2 返回 String1 中包含 String2 中任意字符的第一个位置。
expr substr string1 startposition length 返回string1中从startposition开始的lenght个字符
declare(转自:http://www.cnblogs.com/fhefh/archive/2011/04/22/2024857.html)
declare或typeset内建命令(它们是完全相同的)可以用来限定变量的属性.这是在某些编程语言中使用的定义类型不严格的方式。命令declare是bash版本2之后才有的。命令typeset也可以在ksh脚本中运行。
declare/typeset 选项
- -r 只读
-
1 declare -r var1
(declare -r var1与readonly var1作用相同)
这大致和C的const限定词相同.一个试图改变只读变量值的操作将会引起错误信息而失败.
- -i 整数
-
1 declare -i number 2 # 脚本余下的部分会把"number"当作整数看待. 3 4 number=3 5 echo "Number = $number" # Number = 3 6 7 number=three 8 echo "Number = $number" # Number = 0 9 # 脚本尝试把字符串"three"作为整数来求值(译者注:当然会失败,所以出现值为0).
某些算术计算允许在被声明为整数的变量中完成,而不需要特别使用expr或let来完成。
1 n=6/3 2 echo "n = $n" # n = 6/3 3 4 declare -i n 5 n=6/3 6 echo "n = $n" # n = 2
- -a 数组
-
1 declare -a indices
变量indices会被当作数组.
- -f 函数
-
1 declare -f
在脚本中没有带任何参数的declare -f 会列出所有在此脚本前面已定义的函数出来。
1 declare -f function_name
而declare -f function_name则只会列出指定的函数.
- -x export
-
1 declare -x var3
这样将声明一个变量作为脚本的环境变量而被导出。
- -x var=$value
-
1 declare -x var3=373
declare命令允许在声明变量类型的时候同时给变量赋值。