Shell 之字符串和数组
感谢菜鸟教程:
http://www.runoob.com/linux/linux-shell-variable.html
什么是Shell script
Shell Script是针对Shell写的“脚本”!
Shell Script 注释
单行注释:
#
多行注释:
: << !
将多行进行注释
不信你试试
!
第一个Shell脚本
#!/bin/bash
echo "Hello World !"
运行Shell脚本有两种方法:
1.作为可执行程序
chmod +x ./test.sh
./test.sh
注意,一定要写成./test.sh,而不是test.sh
2.作为解释器参数
/bin/sh test.sh
Shell变量
定义变量时,变量名不加美元符号
your_name=”runoob.com”
使用变量
代码如下:
your_name="qinjx"
echo $your_name
echo ${your_name}
变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界,比如下面这种情况:
for skill in Ada Coffe Action Java; do
echo "I am good at ${skill}Script"
done
输出如下所示:
I am good at AdaScript
I am good at CoffeScript
I am good at ActionScript
I am good at JavaScript
只读变量
#!/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
变量被删除后不能再次使用。unset 命令不能删除只读变量。
#!/bin/sh
myUrl="http://www.runoob.com"
unset myUrl
echo $myUrl
输出为空。
变量类型
变量类型
运行shell时,会同时存在三种变量:
1) 局部变量 局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。
2) 环境变量 所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。
3) shell变量 shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行
Shell字符串
单引号
str=’this is a string’
双引号
your_name=’qinjx’
str=”Hello, I know your are \”$your_name\”! \n”
双引号可以嵌套单引号进行使用:
#!/bin/sh
your_name='crazy'
str="Hello, I know your are ${your_name}! \n"
echo $str
双引号的优点:
1.双引号里可以有变量。
2.双引号里可以出现转义字符。
拼接字符串
#!/bin/bash
your_name="crazy"
greeting="hello, "$your_name" !"
greeting_1="hello, ${your_name} !"
echo $greeting $greeting_1
获取字符串的长度
#!/bin/bash
string="abcd"
echo ${#string} #输出 4
如果写成#!/bin/sh 可能会出错
提取字符串
#!/bin/bash
string="runoob is a great site"
echo ${string:1:4} # 输出 unoo
查找字符串
#!/bin/bash
string="runoob is a great company"
echo `expr index "$string" is` # 输出 8
注意: 以上脚本中 “`” 是反引号,而不是单引号 “’”,不要看错了哦。
Shell数组
bash支持一维数组(不支持多维数组),并且没有限定数组的大小。
类似与C语言,数组元素的下标由0开始编号。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于0。
定义数组
在Shell中,用括号来表示数组,数组元素用”空格”符号分割开。定义数组的一般形式为:
数组名=(值1 值2 … 值n)
例如:array_name=(value0 value1 value2 value3)
读取数组
#!/bin/bash
array_name=(banana apple orange juice)
valuen=${array_name[0]}
echo $valuen
echo ${array_name[3]}
输出为:
banana
juice
获取数组长度
#!/bin/bash
array_name=(banana apple orange juice)
valuen=${array_name[0]}
echo $valuen
echo ${array_name[3]}