如下内容是,学习菜鸟shell教程整理的笔记
菜鸟教程之shell教程:http://www.runoob.com/linux/linux-shell.htmlphp
Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。
Shell 是指一种应用程序,这个应用程序提供了一个界面,用户经过这个界面访问操做系统内核的服务。
Shell脚本(shell script),是一种shell编写的脚本程序。
业界所说的shell一般是指shell脚本,可是shell和shell script是两个不一样的概念。shell包括shell script和开发shell自己。通常实际生产操做过程当中用的是shell编程,编写特定功能的shell script用来解决实际问题。html
Bash:Bourne Again Shell (free and simple to use)
Bash是大多数Linux使用的system默认shell
通常状况下并不区分Bourne Shell 和 Bourne Again Shell,因此像#!/bin/sh 能够改成#!/bin/bash,#! 告诉系统其后路径指定的程序便是解释此脚本文件的shell程序。linux
运行shell脚本的两种方法:
./test.sh
/bin/sh test.sh or /bin/php test.php #直接以解释器运行,就不须要在第一行指定解释器信息。shell
删除变量
unset xxx #unset 命令不能删除只读变量编程
your_name="shell" # 使用双引号拼接 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, shell ! hello, shell ! hello, shell ! hello, ${your_name} !
string="abcd" echo ${#string} #在字符串前面加#就能够实现
string="shell is great" echo ${string:1:4} #输出 hell
string="shell is great" echo `expr index "$string" io` # 输出 7 (空格也算字符)
bash支持一维数组(不支持多维数组),而且没有限定数组的大小。数组
数组名={value0 value1 valuue2....} or array_name=( value0 value1 value2 value3 ) #也能够单独定义: array_name[0]=value0 array_name[1]=value1 array_name[2]=value2
通常格式:${数组名[下标]} vuluen=${array_name[n]} 使用@符号能够读取数组中全部的元素 echo ${array_name[@]}
# 取得数组元素的个数 length=${#array_name[@]} # 或者 length=${#array_name[*]} # 取得数组单个元素的长度 length=${#array_name[n]}
Shell注释
用#号实现单行注释
用:<<EOF .... EOF 实现多行注释,EOF 能够换成其它字母 如‘ or !bash
#!/bin/bash echo "Shell 传递参数实例!" echo "执行的文件名:$0"; echo "第一个参数为:$1"; echo "第二个参数为:$2"; echo "第三个参数为:$3"; eg:./test.sh 1 2 3
只会传递存在的参数个数,若是输入的是./test.sh 1 2 3 4 则4不会被输出编程语言
$# $* $@ 的做用及区别 #!/bin/bash echo "Shell传递参数实例!"; echo "第一个参数为:$1"; echo "参数个数为:$#"; echo "传递的参数做为一个字符串显示:$*"; echo "-- \$* 演示 --"; for i in "$*"; do echo $i done echo "-- \$@ 演示 --"; for i in "$@"; do echo $i done 执行脚本,输出结果以下所示: Shell 传递的参数实例! 执行的文件名:./test.sh 第一个参数为:1 第二个参数为:2 第三个参数为:3 参数个数是:3 传递的参数做为一个字符串显示:1 2 3 --$* 演示 -- 1 2 3 -- $@ 演示 -- 1 2 3 $*与$@区别:只有在双引号中体现出来。假设在脚本运行时写了三个参数 一、二、3,,则 " * " 等价于 "1 2 3"(传递了一个参数),而 "@" 等价于 "1" "2" "3"(传递了三个参数)
用户配置文件:(都在~/家目录下)函数
~/.bash_profile(推荐在此处配置用户环境变量,只对bash有效)——当前用户登陆时调用学习
~/.bashrc(推荐在此处配置用户环境变量,只对bash有效)——当前用户bash打开时调用
array_name=(value1 value2)
array_name[0]=value0 array_name[1]=value1 array_name[2]=value2
${array_name[index]}
#!/bin/bash my_array[0]=A my_array[1]=B my_array[2]=C my_array[3]=D echo "数组的元素为:${my_array[*]}" echo "数组的元素为:${my_array[@]}"
用${#xxx[* or @]}获取数组的长度 eg: #!/bin/bash my_array[0]=A my_array[1]=B my_array[2]=C my_array[3]=D echo "数组元素个数为:${#my_array[*]}" echo "数组元素个数为:${#my_array[@]}" $ ./test.sh 数组元素个数为:4 数组元素个数为:4