一、Shell变量
1.定义变量要求
变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样
命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
中间不能有空格,可以使用下划线(_)。
不能使用标点符号。
不能使用bash里的关键字(可用help命令查看保留关键字)。
使用变量:
$表示站位符
for skill in Ada Coffe Action Java; do
echo "I am good at ${skill}Script"
done
只读变量:
#!/bin/bash
myUrl="http://www.w3cschool.cc"
readonly myUrl
myUrl="http://www.runoob.com"
运行脚本,结果如下:
/bin/sh: NAME: This variable is read only.
删除变量:
unset variable_name
变量类型:
1) 局部变量 局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。
2) 环境变量 所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。
3) shell变量 shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行
获取字符长度:
string="abcd"
echo ${#string}
提取子字符串:
string="runoob is a great site"
echo ${string:1:4} # 输出 unoo
查找子字符串:
string="runoob is a great company"
echo `expr index "$string" is` # 输出 8
定义数组:
array=(1 2 3 5)
中间是空格
输出所有的arr
echo ${arr[@]}
获取长度:
length=${#arr[@]}
关于注释的问题:
一般用#号表示
单多行时:
每一行加个#符号太费力了,可以把这一段要注释的代码用一对花括号括起来,定义成一个函数,没有地方调用这个函数,这块代码就不会执行,达到了和注释一样的效果。
Shell参数传递
我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n。n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推…
echo "Shell 传递参数实例!";
echo "执行的文件名:$0";
echo "第一个参数为:$1";
echo "第二个参数为:$2";
echo "第三个参数为:$3";
∗与 ∗ 与 @ 区别:
相同点:都是引用所有参数。
不同点:只有在双引号中体现出来。假设在脚本运行时写了三个参数 1、2、3,,则 ” * ” 等价于 “1 2 3”(传递了一个参数),而 “@” 等价于 “1” “2” “3”(传递了三个参数)。
运算符:
求两数之和:
注意定义的时候必须有空格
#!/bin/bash
val=`expr 2 + 2`
echo "两数之和为 : $val"
两点注意:
1.表达式和运算符之间要有空格,例如 2+2 是不对的,必须写成 2 + 2,这与我们熟悉的大多数编程语言不一样。
2.完整的表达式要被 包含,注意这个字符不是常用的单引号,在 Esc 键下边。
算数运算符:
注意:条件表达式要放在方括号之间,并且要有空格,例如: [
a==
a
==
b] 是错误的,必须写成 [
a==
a
==
b ]。