美文网首页
shell基础

shell基础

作者: 带着小猪闯天下 | 来源:发表于2021-07-16 13:49 被阅读0次

1,bash

自定义变量

定义:变量名称=值
    变量名称:只能由字母,数字,下划线组成,不能以数字开头
    = :       赋值符号  前后不能有空白        
    值:         所有字符串和数字都可以,但是你应该给字符串加引号
    
引用变量:$变量名 或 ${变量名}
    [root@server shell]# a=8
    [root@server shell]# echo $a
    [root@server shell]# echo ${a}
     8
     
查看变量:       echo $变量名  set(所有变量:包括自定义变量和环境变量)
    #name=tingting
    #set | grep tingting        

取消变量:       unset 变量名
    #unset name

作用范围:       仅在当前shell中有效

变量替换之匹配截取:

[root@bogon ~]# a=abcdefg    //定义变量
[root@bogon ~]# echo ${a:5}     //输出变量内容第5字符之后内容
fg
[root@bogon ~]# echo ${a:2:4}   //输出变量"a" (第二位之后开始截取,截取四位)
cdef

bash测试

数字
-eq 等于               -ne 不等于
-ge 大于等于           -gt 大于
-le  小于等于          -lt  小于
例:
[root@bogon ~]# cat bash.sh 
#!/bin/bash
if [ 5 -eq 3 ];then
    echo 你是对的
else
    echo 你是错的
fi
[root@bogon ~]# sh bash.sh 
你是错的
文件
-f 存在且是正规文件
-d 存在且是目录
-h 存在且是符号链接
-b 块设备
-c 字符设备
-S socket
-p pipe

bash判断

条件判断

if

if代码返回0表示真,非0为假

语法:
if [ *判断* ]; then
  *动作*
else
  *动作*
fi
##elif:多条件判断

case

case 语句是 shell 中流控制的第二种方式,语法如下:
case word in
     pattern1)
          list1
          ;;
     pattern2)
          list2
          ;;
     ... ...
     patternN)
          listN
         ;;
    *)
         list*
         ;;
esac
例:
#!/bin/bash
a=8
case $a in
5)
   echo "这是5";echo "随便写";;
6)
   echo "这是6";;
*)
   echo 什么都不是;;
esac

bash循环

循环

for 循环:

for...do...done
while...do...done

例
练习编写脚本:批量生成账户并给定账户密码
#!/bin/bash
for i in {1..10}
do
        useradd user$i
        if [ $? -eq 0 ];then
                echo 添加用户 user$i 成功!
        else
                echo 添加用户 user$i 失败!
                exit 6
        fi

        echo 1 | passwd  --stdin user$i

        if [ $? -eq 0 ];then
                true
        else
                exit 5
        fi
done

while循环

while cmd
do
    list
done

例:
[root@bogon ~]# cat test.sh  //循环输出0-9
#!/bin/bash
x=0
while [ $x -lt 10 ]
do
      echo $x
      x=`expr $x + 1`
done
[root@bogon ~]# sh test.sh 
0
1
2
3
4
5
6
7
8
9


注:循环控制:
break
直接跳出大循环
continue
跳出当前这一次循环

函数

函数
定义函数
调用函数
取消函数
函数传参

命名空间 
    local
    
    #!/bin/bash
    a=8
    test(){
            local a
            echo $a
            a=9
            echo $a
    }
    echo $a
    test
    echo $a
    
返回值 
    return value
    value不能超过255
myfunc()        #函数定义
{
echo "This is my first shell function"
}

myfunc          #函数调用

unset myfunc    #取消函数
例:
readPass() {
PASS=""
echo -n "Entry Password: " //交互
stty -echo
read PASS
stty echo
echo
}
readPass
echo Password is $PASS
image.png
使用$1,$2传参
#!/bin/bash
test(){
        echo $1 $2
}
test 5  6
使用$*传参
[root@wing shell]# cat a.sh
#!/bin/bash
a=(1 2 3 4 5)
hello(){
    for i in $*   #因为是一个数组,不知道有多少个参数,所以使用$*获取所有参数
    do
        echo $[$i*2]
    done
}
hello ${a[*]}

相关文章

网友评论

      本文标题:shell基础

      本文链接:https://www.haomeiwen.com/subject/dstbpltx.html