#! /bin/bash
your_name="www.baidu.com" #变量 your_name 赋值
echo $your_name #输出变量 要在变量前加$,可以使用 $your_name 或 ${your_name}
for file in `ls /`;do #for循环 `ls /` 目录下的文件,并赋值给file ;
echo ${file} #在循环里输出 ${file}
done #结束循环
#readonly your_name #把变量变成只读,只读后变量不能重新赋值
your_name="www.aliyun.com" #重新赋值变量
echo ${your_name} #输出变量
unset your_name #删除变量
echo ${your_name} #删除变量后,将不会输出任何东西,unset 命令不能删除只读变量。
#变量类型
#运行shell时,会同时存在三种变量:
#1) 局部变量 局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。
#2) 环境变量 所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。
#3) shell变量 shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行
#Shell 字符串
#字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号。单双引号的区别跟PHP类似。
#单引号
str='this is string' #赋值单引号字符串
echo ${str} #输出字符串
#单引号字符串的限制:
#单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
#单引号字串中不能出现单引号(对单引号使用转义符后也不行)。
#双引号
your_name="hello world"
str="Hello, I know your are \"$your_name\"! \n" #赋值双引号字符串,转义了两个双引号
echo ${str} #输出字符串
#双引号的优点:
#双引号里可以有变量
#双引号里可以出现转义字符
#拼接字符串
your_name="world"
str="hello, "$your_name" !" #字符串拼接变量再拼接字符串
str1="hello, ${your_name} !" #双引号里直接引用变量
echo $str $str1 #输出 变量str 拼接 变量str1
#获取字符串长度
string="abcd"
echo ${#string} #字符串变量的大括号里加上#号,就可以获取字符串长度, ${#string}
#提取子字符串
#以下实例从字符串第 2 个字符开始截取 4 个字符:
string="hello world is a great world"
echo ${string:1:4} #输出 ello, 字符串第 2 个字符开始截取 4 个字符:
#查找子字符串
#查找字符 "i 或 s" 的位置:
string="hello world is a great world"
echo `expr index "$string" is` # 输出 13, is的开始位置是13
#注意: 以上脚本中 "`" 是反引号,而不是单引号 "'",不要看错了哦。
################Linux 的字符串截取很有用。有八种方法。
var="http://www.baidu.com/123.htm"
#1. # 号截取,删除左边字符,保留右边字符。
echo ${var#*//}
#其中 var 是变量名,# 号是运算符,*// 表示从左边开始删除第一个 // 号及左边的所有字符
#即删除 http://
#结果是 :www.baidu.com/123.htm
#2. ## 号截取,删除左边字符,保留右边字符。
echo ${var##*/}
##*/ 表示从左边开始删除最后(最右边)一个 / 号及左边的所有字符
#即删除 http://www.aaa.com/
#结果是 123.htm
#3. %号截取,删除右边字符,保留左边字符
echo ${var%/*}
#%/* 表示从右边开始,删除第一个 / 号及右边的字符
#结果是:http://www.baidu.com
#4. %% 号截取,删除右边字符,保留左边字符
echo ${var%%/*}
#%%/* 表示从右边开始,删除最后(最左边)一个 / 号及右边的字符
#结果是:http:
#5. 从左边第几个字符开始,及字符的个数
echo ${var:0:5}
#其中的 0 表示左边第一个字符开始,5 表示字符的总个数。
#结果是:http:
#6. 从左边第几个字符开始,一直到结束。
echo ${var:7}
#其中的 7 表示左边第8个字符开始,一直到结束。
#结果是 :www.baidu.com/123.htm
#7. 从右边第几个字符开始,及字符的个数
echo ${var:0-7:3}
#其中的 0-7 表示右边算起第七个字符开始,3 表示字符的个数。
#结果是:123
#8. 从右边第几个字符开始,一直到结束。
echo ${var:0-7}
#表示从右边第七个字符开始,一直到结束。
#结果是:123.htm
#注:(左边的第一个字符是用 0 表示,右边的第一个字符用 0-1 表示)
your_name="www.baidu.com" #变量 your_name 赋值
echo $your_name #输出变量 要在变量前加$,可以使用 $your_name 或 ${your_name}
for file in `ls /`;do #for循环 `ls /` 目录下的文件,并赋值给file ;
echo ${file} #在循环里输出 ${file}
done #结束循环
#readonly your_name #把变量变成只读,只读后变量不能重新赋值
your_name="www.aliyun.com" #重新赋值变量
echo ${your_name} #输出变量
unset your_name #删除变量
echo ${your_name} #删除变量后,将不会输出任何东西,unset 命令不能删除只读变量。
#变量类型
#运行shell时,会同时存在三种变量:
#1) 局部变量 局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。
#2) 环境变量 所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。
#3) shell变量 shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行
#Shell 字符串
#字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号。单双引号的区别跟PHP类似。
#单引号
str='this is string' #赋值单引号字符串
echo ${str} #输出字符串
#单引号字符串的限制:
#单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
#单引号字串中不能出现单引号(对单引号使用转义符后也不行)。
#双引号
your_name="hello world"
str="Hello, I know your are \"$your_name\"! \n" #赋值双引号字符串,转义了两个双引号
echo ${str} #输出字符串
#双引号的优点:
#双引号里可以有变量
#双引号里可以出现转义字符
#拼接字符串
your_name="world"
str="hello, "$your_name" !" #字符串拼接变量再拼接字符串
str1="hello, ${your_name} !" #双引号里直接引用变量
echo $str $str1 #输出 变量str 拼接 变量str1
#获取字符串长度
string="abcd"
echo ${#string} #字符串变量的大括号里加上#号,就可以获取字符串长度, ${#string}
#提取子字符串
#以下实例从字符串第 2 个字符开始截取 4 个字符:
string="hello world is a great world"
echo ${string:1:4} #输出 ello, 字符串第 2 个字符开始截取 4 个字符:
#查找子字符串
#查找字符 "i 或 s" 的位置:
string="hello world is a great world"
echo `expr index "$string" is` # 输出 13, is的开始位置是13
#注意: 以上脚本中 "`" 是反引号,而不是单引号 "'",不要看错了哦。
################Linux 的字符串截取很有用。有八种方法。
var="http://www.baidu.com/123.htm"
#1. # 号截取,删除左边字符,保留右边字符。
echo ${var#*//}
#其中 var 是变量名,# 号是运算符,*// 表示从左边开始删除第一个 // 号及左边的所有字符
#即删除 http://
#结果是 :www.baidu.com/123.htm
#2. ## 号截取,删除左边字符,保留右边字符。
echo ${var##*/}
##*/ 表示从左边开始删除最后(最右边)一个 / 号及左边的所有字符
#即删除 http://www.aaa.com/
#结果是 123.htm
#3. %号截取,删除右边字符,保留左边字符
echo ${var%/*}
#%/* 表示从右边开始,删除第一个 / 号及右边的字符
#结果是:http://www.baidu.com
#4. %% 号截取,删除右边字符,保留左边字符
echo ${var%%/*}
#%%/* 表示从右边开始,删除最后(最左边)一个 / 号及右边的字符
#结果是:http:
#5. 从左边第几个字符开始,及字符的个数
echo ${var:0:5}
#其中的 0 表示左边第一个字符开始,5 表示字符的总个数。
#结果是:http:
#6. 从左边第几个字符开始,一直到结束。
echo ${var:7}
#其中的 7 表示左边第8个字符开始,一直到结束。
#结果是 :www.baidu.com/123.htm
#7. 从右边第几个字符开始,及字符的个数
echo ${var:0-7:3}
#其中的 0-7 表示右边算起第七个字符开始,3 表示字符的个数。
#结果是:123
#8. 从右边第几个字符开始,一直到结束。
echo ${var:0-7}
#表示从右边第七个字符开始,一直到结束。
#结果是:123.htm
#注:(左边的第一个字符是用 0 表示,右边的第一个字符用 0-1 表示)