首页 > 系统服务 > 详细

shell快速入门

时间:2019-11-08 16:57:54      阅读:93      评论:0      收藏:0      [点我收藏+]

 

$? 表示上一个命令退出的状态,0表示执行正常,不等于0表示执行不正常。
$$ 表示当前进程编号
$0 表示当前脚本名称
$# 表示参数的个数,常用于循环
$*和$@ 都表示参数列表 
$n 表示n位置的输入参数(n代表数字,n>=1)
传递参数这个和c语言等是一样的。类似与下面这样。
./test.sh 1 2 3
接受参数像下面这样处理
#分别表示第一个参数,第二个参数,第三个参数
inputfile1=$1
inputfile2=$2
inputfile3=$3

 read:

#!/bin/bash
read -p "请输入你的名字:" name
echo $name

for循环

#下面这两种形式
#!/bin/bash
for N in 1 2 3
do 
   echo $N 
done

for((i=1;i<=5;i++))
do
  echo "weclome $i"
done

while循环

#!/bin/bash
i=1
while((i<=5))
do
  echo "welcome $i"
  let i++
done

case匹配

#!/bin/bash

case $1 in
start)
   echo "starting"
   ;;
stop)
   echo "stoping"
   ;;
*)
  echo "没有匹配的"
esac

if判断

#!/bin/bash

read -p "请输入用户名" NAME
printf ‘%s\n‘ $NAME
if [ $NAME = root ]
   then
        echo "欢迎你 ${NAME}"
elif [ $NAME = magic ]
   then
        echo "欢迎你,${NAME}"          
else
        echo "你是谁,滚犊子"
fi

比较

# 字符串比较

-lt 小于
-le 小于等于
-eq 等于
-gt 大于
-ge 大于等于
-ne 不等于


-e 判断对象是否存在
-d 判断对象是否存在,并且为目录
-f 判断对象是否存在,并且为常规文件
-L 判断对象是否存在,并且为符号链接
-h 判断对象是否存在,并且为软链接
-s 判断对象是否存在,并且长度不为0
-r 判断对象是否存在,并且可读
-w 判断对象是否存在,并且可写
-x 判断对象是否存在,并且可执行
-O 判断对象是否存在,并且属于当前用户
-G 判断对象是否存在,并且属于当前用户组
-nt 判断file1是否比file2新  [ "/data/file1" -nt "/data/file2" ]
-ot 判断file1是否比file2旧  [ "/data/file1" -ot "/data/file2" ]

字符串

#获取字符串长度
string="abcd"echo ${#string} #输出 4

#提取子字符串 
#以下实例从字符串第 2 个字符开始截取 4 个字符:
string="turtle is a great site"echo ${string:1:4} # 输出 le


#查找子字符串
#查找字符 i 或 o 的位置(哪个字母先出现就计算哪个):
string="runoob is a great site"
echo `expr index "$string" io`  
# 输出 4

数组

(1)定义数组
#在 Shell 中,用括号来表示数组,数组元素用"空格"符号分割开。
array_name=(value0 value1 value2 value3)

(2)读取数组
读取数组元素值的一般格式是:
${数组名[下标]}
例如
valuen=${array_name[n]}
#使用 @ 符号可以获取数组中的所有元素:
echo ${array_name[@]}

(3)获取数组的长度
获取数组长度的方法与获取字符串长度的方法相同,例如:
# 取得数组元素的个数
length=${#array_name[@]}
# 或者
length=${#array_name[*]}

函数

#!/bin/bash
function print_msg {
    echo "Hello, World"
}
print_msg


#或
print_msg() {
    echo "Hello, World"
}
print_msg

 


 

案例一

进度条:

#!/bin/sh  
b=‘‘ 
for ((i=0;$i<=100;i+=2))  
do  
        printf "progress:[%-50s]%d%%\r" $b $i  
        sleep 0.1  
        b=#$b  
done  
echo 


[root@ngsocdev13 ~]# sh print200.sh 
progress:[##################################################]100%

  

案例二

WORK_PATH=$(cd `dirname $0`/.. ; pwd)

NOAH_HOST=$(python -c "import sys;sys.path.append(‘$WORK_PATH‘);from get_noah_host import ConnectionPG;pg = ConnectionPG();print pg.get_noah_ip()")
ES_HOST=$(python -c "import sys;sys.path.append(‘$WORK_PATH‘);from get_es_host import Hosts;host = Hosts();print host.get_es_host()")
BM_LIST=$(python -c "import sys;sys.path.append(‘$WORK_PATH‘);from get_es_host import Hosts;host = Hosts();print host.get_bm_host_num()")

action_zero_relica(){
        template_list=$(curl -sXGET "http://$ES_HOST:9200/_cat/templates"|awk ‘{print $1}‘)

        # 更新模板
        for index in $template_list
        do
                index_template=$(curl -sXGET "http://$ES_HOST:9200/_template/$index")
                json_head="{\""$index"\":"
                zero_shard_template=$(echo $index_template | sed "s/$json_head//g" | sed ‘s/"number_of_replicas":"1"/"number_of_replicas":"0"/g‘ | sed ‘s/"aliases":{}}/"aliases":{}/g‘)

                # echo $zero_shard_template
                $(curl -sPUT "http://$ES_HOST:9200/_template/$index" -d $zero_shard_template > /dev/null 2>&1 &)

        done

        # 替换noah配置文件
        $(ansible -i $NOAH_HOST, all -b -m replace -a ‘path=/usr/local/noah/basp-web-service/conf/service_config.yaml regexp="number_of_replicas: 1" replace="number_of_replicas: 0"‘ >/dev/null 2>&1)

        # 重启诺亚server生效
        $(ansible -i $NOAH_HOST, all -b -m shell -a "systemctl restart noah-web-service" > /dev/null 2>&1 &)

        # 添加索引健康检查为定时任务 1小时执行1次
        $(sed -i "/check_index_health.py/d" /etc/crontab)
        $(echo \*/60        \*        \*        \*        \*    root /usr/bin/python $WORK_PATH/check_index_health.py >> /etc/crontab)
}

# 节点大于
if [ $BM_LIST -le 5 ]

then
        action_zero_relica
else
        exit 0
fi

  

 

 

shell快速入门

原文:https://www.cnblogs.com/shwang/p/11821396.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!