shell编程基础知识

1.新建shell文件

vi  adduser.sh

#指定shell版本

#!/bin/bash

#添加用户

adduser test

#设置密码

passwd test

2.直接运行

chmod +x testshell.sh

直接运行 ./testshell.sh

3.sh命令运行

sh testshell.sh 或者bash testshell.sh

sh软链接其实指向bash

以调试模式执行

sh -x testshell.sh

4.将错误信息输出到日志2>

adduser test 2>/usr/local/shelltest/err.log

如果已经添加该用户将会提示用户已经存在

5.免交互处理 &> 将不会打印提示信息

adduser test &>/dev/null

6.顺序分割;

mkdir /usr/local/docker;cd /usr/local/docker

7.逻辑与&&

make && make install 前面的make失败,make install将不会执行

8.逻辑或||

echo ‘hello’||echo ‘hi’

只有前面失败了才会执行后面一条

9.管道|

find /etc -type f | wc  -l

找到/etc下面的文件类型,通过管道wc 计算文件数量

10.重定向

标准输入 /dev/stdin 文件描述号0

标准输出 /dev/stdout 文件描述号1

标准错误输出 /dev/stderr 文件描述号2

<重定向输入,>重定向输出  >> 追加

echo “hello”> /usr/local/test.txt

echo “world”> >/usr/local/test.txt

  1. 将命令行执行错误信息保存到文件

2 >> 同2>,只是2>>是追加而不是覆盖

ls /rootx 2> /usr/local/shelltest/err.log

ls: 无法访问/rootx: 没有那个文件或目录 错误日志将被打印到err.log

&>相当于>和2>

11.定义变量及引用变量$

变量名称字母,数字,下划线  ,不能数字开头

x=12 | echo $x

x=12 ; echo $x

12.变量范围

x=123 局部

export Y=abc 全局

bash 新开启子shell环境

exit 返回原有shell环境

13.expr 计算并获取结果

+ - * / % 加,减,乘,除,取余

x=1;y=2

expr $[x+y]

14.条件语句

格式

if

then 语句

else 语句

if

#!/bin/bash

iftest()

{

  dirpath="/usr/local/shelltest/funtest"

#注意if与[之间的空格

  if [ -d $dirpath ]

  then

  echo $dirpath exist

  else

  mkdir $dirpath

  fi

}

调用

iftest

15.循环语句

for循环

1.for x in list

do 语句

done

fortest()

{

  names=$(cat /usr/local/shelltest/names.txt)

  for name in $names

  do

  echo $name

  done

}

调用

fortest

提示:  for  param in $* 表示循环所有输入参数,“$*”加双引号,所有的参数将合成一个,比如输入 a  b将合成ab

$@同 $*,不过"$@"加双引号,还是循环所有参数,不会合成一个

2.for((i=1;i<=index;i++))

do 语句

done

#!/bin/bash
#定义sum函数 function也可以去掉,建议加上
function sum(){

        #$1 表示第一个参数
        index=$1
        sum=0
        for((i=1;i<=index;i++))
        do
                sum=$[$sum+$i]
        done
        echo $sum
}
#调用函数
sum $1

while循环

whiletest()

{

  a=1

#注意while与[直接的空格

  while [ $a -le 10 ]

  do

  echo $a

  let  a++

  done

}

whiletest

16.退出和继续

breaktest()

{

   while read -p "请输入待累加的整数,输入0退出:" x

   do

   [ $x -eq 0 ] && break

   sum=$[sum+x]

   echo $sum

   done

}

breaktest

continueTest()

{

 a=0

 #while与[要有空格

 while [ $a -le  20 ]

 do

   let a++

   #[与$ 0与]之间需要有空格

   [ $[a%5] -ne 0 ] && continue

   echo $a

 done

}

continuTest

17.exit退出脚本

exit 默认返回0

也可以指定

exit 1001

18.case分支

caseTest()

{

  read -p "请输入一个字符:" x

  case "$x" in

  [a-z]|[A-Z])

     echo  "$x属于字母" ;;

  [0-9])

     echo "$x属于数字" ;;

  *)

     echo "$x属于非字母或者是数字"

  esac

}

#调用

caseTest

19.函数

vi function.sh

#!/bin/bash
#1.使用echo返回值
function sum1(){
   sum=$[$1+$2]
   echo $sum
}

total1=$(sum1 $1 $2)
echo $total1

#2.使用return返回值
function sum2(){
   total2=$[$1+$2]
   return $total2
}

sum2 $1 $2
#$?会出现取模的情况,建议不要使用$?,可以使用全局变量
echo "$?"


#3.使用全局变量
total3=0
function sum3(){
   total3=$[$1+$2]

}

sum3 $1 $2
#$?会出现取模的情况,建议不要使用$?,可以使用全局变量
echo $total3
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值