Shell编程基础常用代码1

Shell编程

注:大家觉得博客好的话,别忘了点赞收藏呀,本人每周都会更新关于人工智能和大数据相关的内容,内容多为原创,Python Java Scala SQL 代码,CV NLP 推荐系统等,Spark Flink Kafka Hbase Hive Flume等等~写的都是纯干货,各种顶会的论文解读,一起进步。
今天和大家分享一下Shell编程
#博学谷IT学习技术支持



前言

在这里插入图片描述

1、Shell是一种编程语言,该语言底层是C语言
2、Shell是一种解释型语言,和python类似
3、shell以后主要用于脚本编写,通过脚本实现自动化部署和调度
4、Shell是语言的统称,在Shell下面又细分了很多不同的Shell语言,默认用的Base Shell
5、Shell脚本文件的后缀是.sh,不过也可以不写


一、变量

1.用户自定义变量

----正常赋值-------------
str1='hello'
str2='I Love China'  #这里必须加引号,因为字符串中间有空格
echo $str1
echo ${str1}tom #这里必须要加{}

----特殊赋值1-------------
#!/bin/bash 
echo "who are you?" 
read name          #从键盘获取变量的值 
pwd_string=$(pwd)  #将pwd命令的执行结果赋值给pwd_string变量 
date_string=`date` #将date命令的执行结果赋值给date_string变量 
echo "hello, $name" 
echo $pwd_string 
echo $date_string 

----特殊赋值2-------------
#!/bin/bash
pwd         #单独使用,可以指定pwd命令
str=$(pwd)  #只能用于将pwd命令直接结果赋值给另外一变量
str=`pwd`   #同上
echo $str

----只读变量-------------
#!/bin/bash 
myUrl="http://www.google.com"
readonly myUrl                 #将变量声明为只读,以后不能修改
myUrl="http://www.runoob.com"  #这里修改就会报错

----删除变量-------------
#!/bin/sh 
myUrl="http://www.runoob.com" 
unset myUrl    #默认情况下,定义变量之后,直到shell脚本结束空间才会释放,加上该关键字,则立刻释放
echo $myUrl    #报错 

2.环境变量

1、Linux的环境变量一般都是系统提前定义好的变量
2、Linux的环境变量用户也可以定义
3、Linux的环境变量可以在整个系统起作用
4、Linux的环境变量一般都是大写字母
5、Linux的环境变量一般在/etc/profile文件定义

环境量的查看
env 
自定义环境变量
1、打开/etc/profile
2、在/etc/profile中定义变量,注意变量前边加上一个export关键字
 export MY_ENV=helloxxxxxxxxxxxxxxxxxxx
3、刷新/etc/profile文件
 source /etc/profile

3.特殊变量

变量解释
$#命令行参数的个数
$n$1表示第一个参数,$2表示第二个参数,以此类推
$0当前程序的名称
$?前一个命令或许或函数的返回码
$*以“参数1 参数2 。。。”形式保存所有参数
$$本程序的(进程ID号)PID
#!/bin/bash 
echo "Shell 传递参数实例!"; 
echo "执行的文件名:$0"; 
echo "第一个参数为:$1"; 
echo "第二个参数为:$2"; 
echo "第三个参数为:$3"; 
echo "参数个数为:$#"; 
echo "传递的参数作为一个字符串显示*:$*"; 

     $0      $1   $2   $3        
sh demo6.sh  aaa  bbb  ccc

#这里 $# 为 3 表示有3个参数
#这里 $? 为 上一条命令或者脚本返回的状态码 0 表示正常 非0 表示非正常

二、字符串

1.自定格式

#!/bin/sh 
a=xxx
str1=hello
str2='hello world---$a'  #单引号会将包括的所有字符都当成字符串的一部分
str3="hello world---$a"  #只有双引号才能识别字符串中包含的变量引用

echo $str1  #输出 
echo $str2  #输出 hello world---$a
echo $str3  #输出 hello world---xxx

#结论----以后记着使用双引号

2.操作

1、转义
echo "hello\"world"  #输出 hello\"world

2、求字符串长度
str="slkgsklgsksklgsklsgklk"
echo ${#str}

3、字符串截取
string="敢于亮剑决不后退"
echo ${string:2:3}   #解释:2表示从2索引开始,3表示截取3个字符

三、运算符

+加法expr $a + $b 结果为 30。
-减法expr $a - $b 结果为 -10。
*乘法expr $a \* $b 结果为 200。
/除法expr $b / $a 结果为 2。
%取余expr $b % $a 结果为 0。
=赋值a=$b 将把变量 b 的值赋给 a。
==相等。用于比较两个数字,相同则返回 true。[ a == b ] 返回 false。
!=不相等。用于比较两个数字,不相同则返回 true。[ a != b ] 返回 true。
a=10
b=20

#求两个数的和
echo `expr  $a + $b`    #方式1-1,运算符两边必须留空格,而且变量必须加$
echo  $(expr $a + $b)  #方式1-2, 运算符两边必须留空格, 而且变量必须加$

echo $((a+b))          #方式2,运算符两边没有要求
echo $[a+b]            #方式3,运算符两边没有要求  !!!!!

四、流程控制语句

运算符 说明
-eq 检测两个数是否相等,相等返回 true。
-ne 检测两个数是否不相等,不相等返回 true。
-gt 检测左边的数是否大于右边的,如果是,则返回 true。
-lt 检测左边的数是否小于右边的,如果是,则返回 true。
-ge 检测左边的数是否大于等于右边的,如果是,则返回 true。
-le 检测左边的数是否小于等于右边的,如果是,则返回 true。
-n STRING 字符串长度不为零
-z STRING 字符串长度为0
= 判断两个字符串是否一样
!= 判断两个字符串是否不一样
-f 存在且是普通文件
-d 存在且是目录
-h 存在且是符号链接
-e 文件存在
–r 文件存在并且可读
–w 文件存在并且可写
–x 文件存在并且可执行

1.if语句

#1)判断当前系统是否有多个ssh进程,如果有则打印true
#!/bin/bash
if [ $(ps -ef | grep -c "ssh") -gt 1 ]  #注意[] 变量要留空格
then 
 echo "true" 
fi


#2)判断/media/cdrom文件是否存在,若不存在就去创建这个目录
#!/bin/bash 
DIR="/media/cdrom" 
if [ ! -e $DIR ] 
then 
mkdir -p $DIR 
fi

#3)根据年龄判断是否成年
#!/bin/bash
read -p "请输入你的年龄:" age  #键盘录入的提示符

if [ $age -ge 18  ]   #等价与: if test $age -ge 18
then 
 echo "你已经成年了!"
else
 echo "你还没有成年!"
fi

#4)以下实例判断两个变量是否相等:
#!/bin/bash 

read -p "请输入a的值:"  a 
read -p  "请输入b的值:"  b

if [ $a -eq $b ] 
then 
	echo "a 等于 b" 
elif [ $a -gt $b ] 
then 
	echo "a 大于 b" 
elif [ $a -lt $b ] 
then 
	echo "a 小于 b" 
else 
	echo "没有符合的条件" 
fi

#5)输入成绩,判断成绩“优”“良”“中”
#!/bin/bash
read -p "Enter your score(0-100):" n #-p参数表示给出提示信息
if [ $n -ge 85 ] && [ $n -le 100 ] ; then
 echo "优"
elif [ $n -ge 70 ] && [ $n -le 84 ] ; then
 echo "良"
elif [ $n -ge 60 ] && [ $n -le 69 ] ; then  
 echo "中"
else
 echo "差" 
fi

2.for语句

和PYTHON差不多写法
#!/bin/bash

for i in 1 2 3 4 5
do
 echo "-----$i------"
done

--------------------------------
#!/bin/bash

dir=""

if [ -z $1  ] ; then
  dir=$PWD
else
 dir=$1
fi

for file in $(ls $dir)
do
 echo "-------$file"
done


------------输出5次hello world----------------

#!/bin/bash

for((i=1;i<=5;i++))
do
 echo "hello world---$i"
done

------------1-100----------------

#!/bin/bash
s=0
for((i=1;i<=100;i++))
do
 #s=$((s+i))
 #s=$[s+i]
 let s+=i   #加上let关键字,可以让shell的运算符和高级语言接轨 如: let s++
done
echo "The sum of 1+2+..+100 is : $s"

3.while语句

--------1)输出1-5之间的数字------------
#!/bin/bash
num=1
while [ $num -le 5 ]
do
    echo $num
    let num++
done

-------2)1-100的和-------------
#!/bin/bash
i=1
sum=0
while [ $i -le 100 ]
do
  let sum+=i
  let i++
done
echo $sum

4.死循环

# 格式1
for((;;))
do
  echo "hello world"
  sleep 1
done

# 格式2
#!/bin/bash
while :
do
  echo "hello world"
  sleep 1
done

# 格式3
#!/bin/bash
while true
do
  echo "hello world"
  sleep 1
done

5.case语句

#!/bin/bash

read -p "请输入你的选择(1-3):" num

case $num in
  1) 
   echo "你选择了1"
  ;;
  2)
   echo "你选择了2"
  ;;
  3)
   echo "你选择了3"
  ;;
  *)
   echo "你选择了其他"
  ;;
esac

------case的穿透-----------------
#!/bin/bash

read -p "请输入你的选择(1-3):" num

case $num in
  1|2|3) echo "你选择了1或2或3"
    ;;
  *)
   echo "你选择了其他"
  ;;
esac

6.break、continue

和python java 里面的break、continue用法完全一样

#!/bin/bash

while :
do
    echo -n "输入 1 到 5 之间的数字:"
    
    read  aNum

    case $aNum in
        1|2|3|4|5) echo "你输入的数字为 $aNum!"
        ;;
        *) echo "你输入的数字不是 1 到 5 之间的! 游戏结束"
            break
            #continue
            #echo "游戏结束"
        ;;
    esac
done


总结

今天和大家分享了Shell编程基础常用代码1,下次和大家分享Shell编程基础常用代码2函数,数组,select等语法。.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值