http://www.runoob.com/linux/linux-shell-variable.html
学习心得:
运算(算术运算 + - * / ..)
((表达式))
表达式中的变量作用域在(())外。
(表达式)
表达式中的变量作用域在()内
获取运算结果
$((表达式))
$(表达式)
例:两个都可以
i=$(($i + 1))
contentLength=`expr ${#content} - 2`
判断(关系运算 == != > < >= ...)
[表达式]
例:
if [ $((${i} % ${length})) == 0 ]
获取变量长度,在花括号中的变量前加一个#
str="sff is a good man"
echo ${#str}
shell脚本中的外部参数是从$0开始的,只不过$0直接被占用了,就是对应的.sh文件名。我们要传的参数就从$1开始了
以下实例我们向脚本传递三个参数,并分别输出,其中 $0 为执行的文件名:
#!/bin/bash # author:菜鸟教程 # url:www.runoob.com echo "Shell 传递参数实例!"; echo "执行的文件名:$0"; echo "第一个参数为:$1"; echo "第二个参数为:$2"; echo "第三个参数为:$3";
为脚本设置可执行权限,并执行脚本,输出结果如下所示:
$ chmod +x test.sh $ ./test.sh 1 2 3 Shell 传递参数实例! 执行的文件名:./test.sh 第一个参数为:1 第二个参数为:2 第三个参数为:3
shell 中变量赋值也要用$标识的,其实变量处理和php类似,只不过shell变量在等号左边时不用$而已
#!/bin/sh
top='sff is a good man'
echo ${#top}
dd=top
echo $dd
ff=$top
echo $ff
结果为:
17
top
sff is a good man
shell 的read命令有点像java的System.in方法。
ead 命令从标准输入中读取一行,并把输入行的每个字段的值指定给 shell 变量
#!/bin/sh read name echo "$name It is a test"
以上代码保存为 test.sh,name 接收标准输入的变量,结果将是:
[root@www ~]# sh test.sh OK #标准输入 OK It is a test #输出