Shell

1:局部变量,全局变量

局部变量使用:

name=calvin
echo "This is my name $name"

默认局部变量:

$0      当前程序的名称

$n      当前程序的第n个参数,n=1,2,...9

$*       当前程序的所有参数(不包含程序本身)

$#       当前程序的参数个数(不包含程序本身) 

$?       命令或程序执行完成后的状态,一般返回0表示执行成功

$UID   当前用户的ID

$PWD 当前用户的目录

外部传参方式

name=123

echo "This is my name $0"
echo "This is second $1"
                       
wei@ubuntu:~/shell$ sh 01.sh 002
This is my name 01.sh
This is second 002

打出带颜色的字,[0m改为[1m下面的文字颜色均会变化

echo  '\033[32m强调\033[0m'
wei@ubuntu:~/shell$ sh 01.sh 
This is my name 01.sh
This is second 
强调

(强调两字为绿色)

学到一个命令---文件中拷贝当前行:yyp

yy复制  dd删除 p黏贴

if判断

num=100
if [ $0 > 1 ]; then
        echo "big the 1"
else
        echo "less the 1"
fi

输出

wei@ubuntu:~/shell$ sh if.sh 
big the 1

注意

 

1、[ ]表示条件测试。注意这里的空格很重要。要注意在'['后面和']'前面都必须要有空格
2、在shell中,then和fi是分开的语句。如果要在同一行里面输入,则需要用分号将他们隔开。
3、注意if判断中对于变量的处理,需要加引号,以免一些不必要的错误。没有加双引号会在一些含空格等的字符串变量判断的时候产生错误。比如[ -n "$var" ]如果var为空会出错4、判断是不支持浮点值的
5、如果只单独使用>或者<号,系统会认为是输出或者输入重定向,虽然结果显示正确,但是其实是错误的,因此要对这些符号进行转意
6、在默认中,运行if语句中的命令所产生的错误信息仍然出现在脚本的输出结果中
7、使用-z或者-n来检查长度的时候,没有定义的变量也为0
8、空变量和没有初始化的变量可能会对shell脚本测试产生灾难性的影响,因此在不确定变量的内容的时候,在测试号前使用-n或者-z测试一下
9、? 变量包含了之前执行命令的退出状态(最近完成的前台进程)(可以用于检测退出状态)

if条件语句

-f           判断文件是否存在 if [ -f filname ]

-d          判断目录是否存在 if [ -d dir ]

-eq        等于       应用在整型比较

-ne       不等于    应用在整型比较

-lt         小于        应用在整型比较

-gt        大于       应用在整型比较

-le         小于或等于 应用在整型比较

-ge        大于或等于 应用在整型比较

-a          双方都成立(and) 逻辑表达式

-o          单方成立(or)逻辑表达式

-z          空字符串

测试脚本是否有语法问题

/bin/bash  -n  if1.sh

循环语句for

For 变量 in 字符串

    do

     语句1

    done

#!/bin/bash
j=0
for ((k=1;k<=100;k++))

do
        j=`expr $k + $j`
done
echo $j

tar压缩两个文件

for i in `find ./ -name "*.sh"|tail -2`
do
        tar -cvf 2014all.tgz $i
done

解压缩

for i in `find ./ -maxdepth 1 -name "*.tgz"|tail -2`
do
        tar xvf  $i -C /home/wei/shell/test
done

while循环

i=1;
while [[ $i -lt 10 ]];do
        echo $i;
        ((i++));
done;

read使用

read -p "Enter your name:" v1 v2
echo $v1
echo $v2

read读取整个文件

#!/bin/bash
while read line
do
        echo $line
done </home/wei/shell/read.sh

awk读取第二行

#!/bin/bash
while read line
do
IP=`echo $line |awk '{print $2}'`
echo "\033[32mscp -r /tmp/test.txt root@$IP:/tmp \033[0m"
done <awk.txt

awk.txt

#ip list txt
1 192.168.1.11 /src1 /des1
2 192.168.1.12 /src2 /des2
3 192.168.1.13 /src3 /des3
4 192.168.1.14 /src4 /des4
5 192.168.1.15 /src5 /des5
6 192.168.1.16 /src6 /des6

until 循环

#!/bin/sh
a=10;
until [[ $a -lt 0 ]]; do
echo $a;
((a--));
done;

case选择语句

case $1 in
        Apache )
                echo "Wait instlal httpd server...."
                tar jxvf httpd-2.2.27.tar.bz2 ;cd httpd-2.2.27
                ;;
        Mysql )
                echo "Wait instlal Mysql server..."
                ;;
        PHP )
                echo "Wait instlal PHP server..."
                ;;
         * )
                echo "Usage: {$0 Apache|Mysql|PHP|help}"
                ;;
esac

select语句

wei@ubuntu:~/shell$ select i in "centos" "redhat" "ubuntu" ;do echo "Select you use system:" $i;done 
1) centos
2) redhat
3) ubuntu
#? 1
Select you use system: centos

select+case

select i in "Apache" "Mysql" "PHP"
do
case $i in
          Apache )
          echo "Wait instlal httpd server...."
          tar jxvf httpd-2.2.27.tar.bz2 ;cd httpd-2.2.27
          ;;
          Mysql )
          echo "Wait instlal Mysql server..."
          ;;
          PHP )
          echo "Wait instlal PHP server..."
          ;;
          * )
          echo "Usage: {$0 Apache|Mysql|PHP|help}"
          ;;
esac
done

数组的使用

#!/bin/bash
soft=(
        nginx-1.6.1.tar.gz
        mysql-5.1.17.tar.gz
        /etc/sysctl.conf
)
echo "This soft total ${#soft[@]} !"
echo "${soft[0]}"
#tar -xzf ${soft[0]};cd nginx-1.6.1;./configure;make;make install;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值