博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
shell学习笔记
阅读量:7219 次
发布时间:2019-06-29

本文共 3443 字,大约阅读时间需要 11 分钟。

一:变量

命名规则:

  • 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
  • 中间不能有空格,可以使用下划线(_)。
  • 不能使用标点符号。
  • 不能使用bash里的关键字(可用help命令查看保留关键字)。

变量使用:

     $your_name

     ${your_name}

     "My name is ${your_name}"

推荐给所有变量加上花括号,这是一个人好的编程习惯。

只读变量:

     myurl="my name is kenny"

     readonly  myurl

    再去给变量赋值是不可实现的

删除变量:

    uset myurl   #此时变量已经被删除

shell变量:

    环境变量,局部变量,shell变量    

Shell字符串:

  1:单引号和双引号区别

             单引号中不能出现单引号,用转义字符转义也不行,双引号可以

             单引号中不能出现变量,双引号可以

       2:拼接字符串

             $aa$bb

       3.获取字符串长度

             str=“asfgsdfg”

      echo ${#str}   会输出字符串长度

       4.提取字符串

             echo ${str:1:6}   #会输出di第2到7位

       5.查找字符串位置

              echo `expr index "$str" f`   #输出字符串f在字符串中的位置

 二:参数传递

  1.$n        传递参数

  2.$#        传递参数个数

  3.$*        以一个单字符串显示所有向脚本传递的参数

  4.$@     $*相同,但是使用时加引号,并在引号中返回每个参数。

  5.$$      脚本运行的当前进程ID号

       6.$!       后台运行的最后一个进程的ID号

       7.$?     表示上一条命令的返回值

  8.$0     Shell本身的文件名

  9.$1~$n 添加到Shell的各参数值。$1是第1参数、$2是第2参数…

       

三:数组

  规则:

             1:shell只支持一维数组,不支持多维

             2:shell数组用括号括起来表示,元素之间用空格隔开

             my_array=(A B C D)

输出:      echo  “${my_array[0]}”      获取所有数组元素:
echo "数组的元素为: ${my_array[*]}"     echo "数组的元素为: ${my_array[@]}"
获取数组长度:
echo "数组的元素为: ${#my_array[*]}"     echo "数组的元素为: ${#my_array[@]}"
注意事项:      1:数组元素可以为变量
my_array=($A B C D)

四:运算符

      shell中运算符分为6种:

  1:算术运算符

  2:关系运算符

  3:布尔运算符

  4:字符串运算符

  5:文件测试运算符

  详解:

  1:算术运算符

            val='exper   2 + 2'     #输出为4

           注意2 + 2之间运算符和数字之间一定要有空格,否则会按字符串输出

     

  2:关系运算符

      

  3:布尔运算符

     

  4:逻辑运算符

    

  5:字符串运算符

    

  6:文件测试运算符

     

二:echo

  1:显示转义字符

            echo "\" myname    \""

  2:显示变量

    echo "$name It is a test"

  3:换行

          cheo "hello word  \n"

  4:不换行

  echo -e "OK! \c" # -e 开启转义 \c 不换行   echo "It is a test"

  5:显示结果重定向

     echo "It is a test" > myfile

三:流程控制

     if...else

if [ $exitstatus = 0 ]; then   if [ ! $PET ]; then  	echo "you have not input a word!"    else        echo $PTION         if [ $PTION = 1 ]; then           echo "Your ip is:" $PET           echo -e "\n#" $PET  "\n0.0.0.0 10${PET} 172.17.17.${PET} 3389">>/root/aa.sh        else        	   echo "Your ip is:" $PET      	   echo -e "\n#" $PET  "\n0.0.0.0 10${PET} 172.17.17.${PET} 22">>/root/aa.sh      	   echo -e             "0.0.0.0 20${PET} 172.17.17.${PET} 80">>/root/aa.sh      	   echo -e             "0.0.0.0 30${PET} 172.17.17.${PET} 9091">>/root/aa.sh        fi     fielse    echo "You chose Cancel."fi

  for

for loop in 1 2 3 4 5do    echo "The value is: $loop"done

  while

int=1while(( $int<=5 ))do    echo $int    let "int++"done

  

     until

     case

    

case "$1" in   -c)        BackupControllerConfig    ;;   -p)        BackupComputeConfig    ;;   -rc)        RestoreControllerConfig    ;;   -rp)        RestoreComputeConfig    ;;   -ri)        RintedConfig    ;;   *)          Openstack_help    exit 0esac

  

     break

     break命令允许跳出所有循环(终止执行后面的所有循环)。

     continue

     continue命令与break命令类似,只有一点差别,它不会跳出所有循环,仅仅跳出当前循环。

 

其他:

   shell脚本中获取当前路径

$(cd `dirname $0`; pwd)

 -E表示一旦出错,就退出当前的shell。

bash -E /root/1.sh

 $? 上个命令的退出状态,或函数的返回值。

-ne 是不等于
check_exit(){    if [ $? -ne 0 ]; then        echo -e "\033[41;37m[Error]: have a error \033[0m"        exit 1    fi}

 解压安装包到/opt/目录下

tar -zxf ./packages/s3_bs_install.2* -C /opt/

  当前bash环境下读取并执行FileName中的命令

source ./config/deploy-config

  允许您创建简短的程序,这些程序读取输入文件、为数据排序、处理数据、对输入执行计算以及生成报表,还有无数其他的功能。

       对获取的字符串进行排序排重

$(echo ${all_ips_old} | awk '{for(i =1; i <=NF; i++){ if($i~/[0-9]\.[0-9]/) print $i  }}'|sort -u)

  1:export  使变量为全局变量

        2:使用加-o StrictHostKeyChecking=no参数,SSH 公钥检查是一个重要的安全机制,可以防范中间人劫持等黑客攻击。但是在特定情况下,严格的 SSH 公钥检查会破坏一些依赖 SSH 协议的自动化任务,就需要一种手段能够绕过 SSH 的公钥检查

export autossh="ssh -i ${ssh_private_key} -o StrictHostKeyChecking=no" #-q: 不显示传输进度条export autoscp="scp -i ${ssh_private_key} -o StrictHostKeyChecking=no -q"

  

 

转载地址:http://nrxym.baihongyu.com/

你可能感兴趣的文章
取消手机端页面长按图片出现保存或者图片被打开的方法
查看>>
关于图片居中问题
查看>>
并发下的死锁问题
查看>>
Winserver下的Hyper-v “未在远程桌面会话中捕获到鼠标”
查看>>
oracle体系结构基础
查看>>
有关TCP和UDP 粘包 消息保护边界
查看>>
Mono为何能跨平台?聊聊CIL(MSIL)
查看>>
安装scrapy问题:-bash:scrapy:command not found
查看>>
CentOS7 重置root密码
查看>>
博客作业四
查看>>
Scanner 输入---从键盘输入两个数进行相加
查看>>
test
查看>>
说无可说
查看>>
mysql 语句优化
查看>>
SCP 命令参数使用详解(最详细使用指南)
查看>>
windows cmd color setup
查看>>
一些问题
查看>>
ubuntu配置cudnn
查看>>
P1242 新汉诺塔 && UVA10795 A Different Task
查看>>
从零开始学习PYTHON3讲义(十一)计算器升级啦
查看>>