shell--1.shell 相关及变量
2016-07-25 12:05
501 查看
1.shell脚本解释器
bash 由于易用和免费,所以在开发环境中广泛应用
2.第一个shell 脚本
#! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行。
3.运行脚本有2种方法,
(1) 一种就是把上面的内容保存到test.sh
(2)另一种是直接运行解释器,其参数就是上面保存的文件名
这种方式不需要在脚本写解释器信息(#!/bin/bash),写了也没用
4. shell变量
(1)定义规则:
(1) 可以包含字母,数字,下划线,不能有标点符号
(2) 必须以字母或者下划线开头
(3) 大小写敏感
(4) 不能包含bash里面的关键字
(2)使用变量
使用一个定义过的变量,只需在前面加一个$符号
如:
花括号加不加都行,加上花括号,是让解释器识别变量的边界,如:
(3)重新赋值
第二次赋值的时候不用加$ ,只有使用变量的时候才加$符号
(4) 只读变量
执行会报错:./first_shell.sh:行8: myname: 只读变量
(5) 删除变量
不会输出任何东西
(6) 变量类型
1)局部变量:在脚本或命令中定义,仅在当前shell实例中有效,其它shell不能访问该局部变量
2)环境变量:所有的程序,包括shell启动程序都要访问环境变量,有些程序需要环境变量保证其正确运行,如在脚本执行启动nginx,那么环境变量必须要有nginx的相关配置
3)shell变量:是由shell程序设置的特殊变量。有一部分是环境变量有一部分是局部变量,这此变量保证了shell的正常运行。
5. shell字符串,字符串可能用单引号,双引号,也可以不用引号
(1) 单引号
1)单引号里所有的字符都会原样输出
2)单引号的变量是无效的如
3)单引号里面不可有单引号,转义字符单引号(\')也不行
(2) 双引号
1)双引号可以有变量
2)双引号可以出现转义字符
(3) 反引号 ` 1左边的按键
反引号里面包含的一般是命令,给当前正在执行的shell强制插入命令,如:
(4) 拼接字符串
(5) 获取字符串长度
(6) 截取字符串
从第1个字符开始,截取5个字符:
6. shell 数组
1)定义数组
shell中,用括号表示数组,数组元素用空格分开,定义数组的一般形式
2)读取数组
使用@读取数组所有的元素
3)获取数组长度
7.shell 注释 ###
8.shell 参数传递
1)$# 传递到脚本的参数个数
2)$* 传递到脚本的所有参数
3)$@ 传递到脚本的所有参数
4)$? 显示最后命令的退出状态,0表示没有错误,其它任何数字都表示有问题
5)$$ 脚本运行的当前进程的id号
6)$! 后台运行的最后一个进程的id号
7)$-显示Shell使用的当前选项,与set命令功能相同。
Bourme Shell (/usr/bin/sh 或 /bin/sh ) Bourme Again Shell ( /bin/bash ) C Shell ( /usr/bin/csh ) K Shell ( /usr/bin/ksh ) shell for Root ( /sbin/sh)
bash 由于易用和免费,所以在开发环境中广泛应用
2.第一个shell 脚本
#!/bin/bash echo "Hello World"
#! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行。
3.运行脚本有2种方法,
(1) 一种就是把上面的内容保存到test.sh
chmod +x test.sh ./test.sh
(2)另一种是直接运行解释器,其参数就是上面保存的文件名
/bin/sh test.sh 或 /bin/bash test.sh
这种方式不需要在脚本写解释器信息(#!/bin/bash),写了也没用
4. shell变量
(1)定义规则:
(1) 可以包含字母,数字,下划线,不能有标点符号
(2) 必须以字母或者下划线开头
(3) 大小写敏感
(4) 不能包含bash里面的关键字
(2)使用变量
使用一个定义过的变量,只需在前面加一个$符号
如:
myname="lvyf" echo "$myname" ecoh "${myname}"
花括号加不加都行,加上花括号,是让解释器识别变量的边界,如:
echo "this is myname $mynameHaha" 这种 情况不加花括号,解释器就会认为mynameHaha是一个量 正确写法 echo "this is myname ${myname}Haha"
(3)重新赋值
myname="lvyf" echo "${myname}" myname="lvyafei" echo "${myname}"
第二次赋值的时候不用加$ ,只有使用变量的时候才加$符号
(4) 只读变量
myname="lvyf" echo "${myname}" readonly myname myname="lvyafei"
执行会报错:./first_shell.sh:行8: myname: 只读变量
(5) 删除变量
unset myname echo ${myname}
不会输出任何东西
(6) 变量类型
1)局部变量:在脚本或命令中定义,仅在当前shell实例中有效,其它shell不能访问该局部变量
2)环境变量:所有的程序,包括shell启动程序都要访问环境变量,有些程序需要环境变量保证其正确运行,如在脚本执行启动nginx,那么环境变量必须要有nginx的相关配置
3)shell变量:是由shell程序设置的特殊变量。有一部分是环境变量有一部分是局部变量,这此变量保证了shell的正常运行。
5. shell字符串,字符串可能用单引号,双引号,也可以不用引号
(1) 单引号
1)单引号里所有的字符都会原样输出
2)单引号的变量是无效的如
str1='abc' str2='hello ${str1} ' 这段会输出 hello ${str1}
3)单引号里面不可有单引号,转义字符单引号(\')也不行
(2) 双引号
1)双引号可以有变量
2)双引号可以出现转义字符
str="lvyf" echo "hello \"${str}\" heheh" 输出:hello "lvyf" heheh
(3) 反引号 ` 1左边的按键
反引号里面包含的一般是命令,给当前正在执行的shell强制插入命令,如:
str="lvyf" echo "hello \"${str}\" heheh `date`" date就是获取当前时间的命令,打印: hello "lvyf" heheh 2016年 07月 25日 星期一 18:22:47 CST
(4) 拼接字符串
your_name="lvyafei" greeting="hello ${your_name}" echo ${greeting}
(5) 获取字符串长度
echo ${#greeting} #输出13
(6) 截取字符串
从第1个字符开始,截取5个字符:
echo ${greeting:0:5} #输出hello
6. shell 数组
1)定义数组
shell中,用括号表示数组,数组元素用空格分开,定义数组的一般形式
arrt_name=(val1 val2 val3) 或者 arry_name=(val1 var2 val3 val4 ) 或者 arry_name[0]=val1 arry_name[3]=val3 可以不使用连续的下标,而且下标范围没有限制
2)读取数组
${arry_name[0]}
使用@读取数组所有的元素
arry[1]=10 arry[3]=20 echo ${arry[@]} # 打印出10 20
3)获取数组长度
${#arry_name[@]} ${#arry_name[*]} ${#arry_name }
7.shell 注释 ###
8.shell 参数传递
1)$# 传递到脚本的参数个数
2)$* 传递到脚本的所有参数
3)$@ 传递到脚本的所有参数
4)$? 显示最后命令的退出状态,0表示没有错误,其它任何数字都表示有问题
5)$$ 脚本运行的当前进程的id号
6)$! 后台运行的最后一个进程的id号
7)$-显示Shell使用的当前选项,与set命令功能相同。
$* 和 $@ 的区别 如果传了3个参数 a,b,c ,使用$* 认为就传了一个参数abc 而使用$@ 会认为传了3个参数 a , b ,c
相关文章推荐
- 常用的shell命令汇总,夯实Linux基础
- linux shell数据重定向(输入重定向与输出重定向)详细分析
- Shell脚本如何链接数据库并导出数据
- 【HDU5730 2016 Multi-University Training Contest 1H】【FFT + cdq 分治】 Shell Necklace f[i]=∑f[i-j] x a[j]
- ces PS1SHELL
- 测试BASHshe'll
- shell脚本里的$0等的含义
- linux笔记:shell基础-bash基本功能
- 关于第三方终端command not found不加载.bash_profile 解决方法
- I.MX6 Android shutdown shell command
- shell内部命令和外部命令
- shell脚本变量作用域
- shell 脚本监控程序是否正在执行, 如果没有执行, 则自动启动该进程
- Linux bash特性
- bash 交互与非交互
- 2、希尔排序(Shell`s Sort)
- Linux shell script学习
- shell script input and out put functuo
- shell 中的 set命令 -e -o 选项作用
- shell写俄罗斯方块二