本文地址html
点击关注微信公众号 wenyuqinghuailinux
分享提纲:正则表达式
1. shell中的函数shell
2. shell中的数组vim
4. shell中的运算符bash
5. Linux的一些命令微信
6. 几个自定义的脚本(能够添加到命令中)ide
1.1)【定义shell函数(define function)】函数
[ function ] funname [()] { action; [return int;] }
说明:
实例(testfun1.sh):
1 #!/bin/sh 2 3 fSum 3 2; 4 function fSum() 5 { 6 echo $1,$2; 7 return $(($1+$2)); 8 } 9 fSum 5 7; 10 total=$(fSum 3 2); 11 echo $total,$?; 12 13 sh testfun1.sh 14 testfun1.sh: line 3: fSum: command not found 15 5,7 16 3,2 17 1 18 5
从上面这个例子咱们能够获得几点结论:
1.2)【函数做用域,变量做用范围】
先咱们看一个实例(testfun2.sh ):
1 #!/bin/sh 2 3 echo $(uname); 4 declare num=1000; 5 6 uname() 7 { 8 echo "test!"; 9 ((num++)); 10 return 100; 11 } 12 testvar() 13 { 14 local num=10; 15 ((num++)); 16 echo $num; 17 18 } 19 20 uname; 21 echo $? 22 echo $num; 23 testvar; 24 echo $num; 25 26 sh testfun2.sh 27 Linux 28 test! 29 100 30 1001 31 11 32 1001
咱们一块儿来分析下上面这个实例,能够获得以下结论:
2.1)【数组的定义】
两种方法
arr=(1 2 3 4 5) # 注意是用空格分开,不是逗号!!
和
array array[0]="a" array[1]="b" array[2]="c"
2.2)【数组的遍历】
for var in ${ arr[@] }; do echo $var done
2.3)【数组其余】
-- 【读取数组】
valuen=${array_name[n]} #获取单个元素 echo ${array_name[@]} #获取全部元素 # 取得数组元素的个数 length=${#array_name[@]} # 或者 length=${#array_name[*]} # 取得数组单个元素的长度 lengthn=${#array_name[n]}
3.1)定义
your_name="runoob.com"
-- 不能有空格
--能够使用表达式赋值
for file in `ls /etc`
3.2)【使用变量】
your_name="qinjx" echo $your_name echo ${your_name}
-- 能够加 {}, 也能够不加
--【只读变量】 readonly myUrl
--【删除变量】 unset variable_name
3.3)【Shell 字符串】
-- 能够单引号或者双引号,双引号会解析变量
--获取字符串长度
string="abcd" echo ${#string} #输出 4
-- 截取字符串
string="runoob is a great site" echo ${string:1:4} # 输出 unoo
-- 查找字符串
string="runoob is a great company" echo `expr index "$string" is` # 输出 8
4.1)【基本运算符】
原生bash不支持简单的数学运算,可是能够经过其余命令来实现,例如 awk 和 expr,expr 最经常使用。
#!/bin/bash val=`expr 2 + 2` echo "两数之和为 : $val"
4.2)【关系运算符】
lt : litter than
gt: grater than
运算符 | 说明 | 举例 |
---|---|---|
-eq | 检测两个数是否相等,相等返回 true。 | [ $a -eq $b ] 返回 false。 |
-ne | 检测两个数是否相等,不相等返回 true。 | [ $a -ne $b ] 返回 true。 |
-gt | 检测左边的数是否大于右边的,若是是,则返回 true。 | [ $a -gt $b ] 返回 false。 |
-lt | 检测左边的数是否小于右边的,若是是,则返回 true。 | [ $a -lt $b ] 返回 true。 |
-ge | 检测左边的数是否大于等于右边的,若是是,则返回 true。 | [ $a -ge $b ] 返回 false。 |
-le | 检测左边的数是否小于等于右边的,若是是,则返回 true。 | [ $a -le $b ] 返回 true。 |
4.3)【字符串运算符】
-z | 检测字符串长度是否为0,为0返回 true。 | [ -z $a ] 返回 false。 |
-n | 检测字符串长度是否为0,不为0返回 true。 | [ -n $a ] 返回 true。 |
str | 检测字符串是否为空,不为空返回 true。 | [ $a ] 返回 true。 |
4.4)【文件测试运算符】
文件测试运算符用于检测 Unix 文件的各类属性。
属性检测描述以下:
操做符 | 说明 | 举例 |
---|---|---|
-b file | 检测文件是不是块设备文件,若是是,则返回 true。 | [ -b $file ] 返回 false。 |
-c file | 检测文件是不是字符设备文件,若是是,则返回 true。 | [ -c $file ] 返回 false。 |
-d file | 检测文件是不是目录,若是是,则返回 true。 | [ -d $file ] 返回 false。 |
-f file | 检测文件是不是普通文件(既不是目录,也不是设备文件),若是是,则返回 true。 | [ -f $file ] 返回 true。 |
-g file | 检测文件是否设置了 SGID 位,若是是,则返回 true。 | [ -g $file ] 返回 false。 |
-k file | 检测文件是否设置了粘着位(Sticky Bit),若是是,则返回 true。 | [ -k $file ] 返回 false。 |
-p file | 检测文件是不是有名管道,若是是,则返回 true。 | [ -p $file ] 返回 false。 |
-u file | 检测文件是否设置了 SUID 位,若是是,则返回 true。 | [ -u $file ] 返回 false。 |
-r file | 检测文件是否可读,若是是,则返回 true。 | [ -r $file ] 返回 true。 |
-w file | 检测文件是否可写,若是是,则返回 true。 | [ -w $file ] 返回 true。 |
-x file | 检测文件是否可执行,若是是,则返回 true。 | [ -x $file ] 返回 true。 |
-s file | 检测文件是否为空(文件大小是否大于0),不为空返回 true。 | [ -s $file ] 返回 true。 |
-e file | 检测文件(包括目录)是否存在,若是是,则返回 true。 | [ -e $file ] 返回 true。 |
5.1)【一些不太常见的命令】
-- 查看当前发行版本能够使用的shell:cat /etc/shells
5.2)【正则表达式】
5.3)【awk命令】
http://blog.csdn.net/shanyongxu/article/details/46563997
5.4)【xargs命令】
http://blog.csdn.net/shanyongxu/article/details/46859829
1)【实现scp下载远程文件到本地】
-- down.sh 放到 ~/my_cmd
#!/bin/bash if [ -z $1 ] then echo "请输入要下载的远程文件" else scp -P5860 root@10.x.xx.xx:$1 ~/Downloads echo "文件下载到了 ~/Downloads" fi
而后在 vim ~/.bashrc 加上
alias down='sh ~/my_cmd/down.sh'
就能够使用 down yourRemoteFile 命令下载远程文件到本地了