变量
shell编程中分为两种变量
第一种是我们自己定义的变量(自定义变量)
第二种是Linux已定义的环境变量(环境变量, 例如 $PATH,$HOME等,这类变量我们可以直接使用)下面演示了自定义变量和系统环境变量的用法,使用很简单,就是使用 $ 符号加上变量名就行了。记住:定义变量不用 $ 符号,使用变量要加 $ 就行了。我们在自定义变量时,使用了双引号,在 shell 编程中, 如果变量出现空格或者引号,那么也必须加引号, 否则就可以省略。还有一点需要注意,定义变量的时候,"=" 左右千万不要有空格啊。
#!/bin/bash
# 使用环境变量
echo $PATH
# 自定义变量hello
hello="hello world"
echo $hello
使用变量
变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界
your_name="qinjx"
echo $your_name
echo ${your_name}
A=B
echo $AB
# 原本是打算先将变量 $A 的结果输出,然后再补一个 B 字母于其后,
# 但在命令行上,真正的结果却是空,因为没有AB这个变量
若使用 ${ } 就没问题了:
echo ${A}B
BB
将linux命令执行结果赋值给变量
#!/bin/bash
date=$(date +%Y%m%d)
date_2=`date +%Y%m%d%H%M%S`
echo today is: $date
echo today is: $date_2
字符串
字符串可以用单引号,也可以用双引号,也可以不用引号。单双引号的区别跟PHP类似。
单引号字符串的限制:
单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。
your_name="alice"
# 使用双引号拼接
greeting="hello, "$your_name" !"
greeting_1="hello, ${your_name} !"
echo $greeting $greeting_1
# 使用单引号拼接
greeting_2='hello, '$your_name' !'
greeting_3='hello, ${your_name} !'
echo $greeting_2 $greeting_3
# 输出结果
hello, alice ! hello, alice !
hello, alice ! hello, ${your_name} !
获取字符串长度
string="abcd"
echo ${#string}
# 输出
4
提取字符串
以下实例从字符串第 2 个字符开始截取 4 个字符:
string="runoob is a great site"
echo ${string:1:4}
# 输出
unoo
查找子字符串
查找字符 i 或 o 的位置(哪个字母先出现就计算哪个):
string="runoob is a great site"
echo `expr index "$string" io`
# 输出
4
打印输出
普通字符串
echo "It is a test"
# 双引号完全可以省略
echo It is a test
# 显示转义字符
echo "\"It is a test\""
# 显示变量
name="luanpeng"
echo "$name It is a test"
# -e 开启转义
echo -e "OK! \n"
# -e 开启转义 \c 打印后不换行
echo -e "OK! \c"
# 显示结果定向至文件
echo "It is a test" > myfile
# 显示命令执行结果
echo `date`