基础shell编程

执行一个shell文件

# 也可用绝对路径
[root@localhost shell]# ./myShell.sh 
hello,world

shell变量

  • 系统变量 $PATH $USER 等

    echo "PATH=$PATH"
    echo "user=$USER"
    
  • 用户自定义变量 A=100,readonly 静态变量不能unset

    A=100
    echo "A=$A"
    unset A
    echo "A=$A"
    
    #静态变量
    readonly A=99
    echo "A=$A"
    unset A		#报错
    echo "A=$A"
    

    等号两边不能有空格

    变量名称一般大写

命令输出值给变量

# 第一种``
RESULT=`ls -l /home`
echo $RESULT
echo ""
# 第二种$()
MY_DATE=$(date)
echo "date=$MY_DATE"

设置环境变量

  1. 定义变量 TOMCAT=/opt/tomcat
  2. export [TOMCAT] 导出全局变量
  3. source /etc/profile 使其生效

位置参数变量

  • $n n为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的参数用{}包起来
  • $* 把所有参数当成一个整体
  • $@ 把每个参数区分对待
  • $# 统计参数个数

预定义变量

  • $$ 当前进程的pid
  • $! 后台运行的最后一个进程号
  • $? 最后一次执行的命令的返回状态
#!/bin/bash
echo "当前pid=$$"
#后台的方式运行 myShell.sh
./myShell.sh &
echo "最后的进程号=$!"
echo "执行结果=$?"

运算符

#!/bin/bash

# 第一种方式
RESULT1=$(((2+3)*4))
echo "result1=$RESULT1"

# 第二种方式 ****推荐****
RESULT2=$[(2+3)*4]
echo "result2=$RESULT2"

# 第三种expr
TEMP=`expr 2 + 3`
RESULT3=`expr $TEMP \* 4`
echo "RESULT3=$RESULT3"

条件判断

#!/bin/bash

#1. "ok"是否等于"ok" 字符串相等判断是 = ,数字是 -eq

if  [ "ok" = "ok" ]
then
        echo "equal"
fi


#2. 23是否大于等于22

if [ 23 -gt 22 ]
then
        echo "大于"
fi

#3. 判断/root/shell/aaa.txt 文件是否存在

if [ -e /root/shell/aaa.txt ]
then
        echo "存在"
fi

流程控制

  • if elif
#!/bin/bash

if [ $1 -ge 60 ]
then
        echo "及格"
elif [ $1 -lt 60 ]
then
        echo "不及格"
fi
  • case
#!/bin/bash

case $1 in
"1")
echo "周一"
;;
"2")
echo "周二"
;;
*)
echo "other"
;;
esac
  • for
#!/bin/bash

#打印命令行输入的参数
#使用$* 整体处理
for i in "$*"
do
        echo "th num is $i"
done

echo "****************"
#使用$@ 分开处理
for j in "$@"
do
        echo "the num is $j"
done
#!/bin/bash
# 求1-100的和
SUM=0
for((i=1;i<=100;i++))
do
        SUM=$[$SUM+$i]
done
echo "sum=$SUM"
  • while
#!/bin/bash

SUM=0
i=0
while [ $i -le $1 ]
do
        SUM=$[$SUM+$i]
        i=$[$i+1]
done
echo "sum=$SUM"

read 读取控制台参数

#! /bin/bash

#读取控制台输入一个num
read -p "请输入一个数num1=" NUM1
echo "输入的值是num1=$NUM1"

#读取控制台输入一个num,要求10秒内输入
read -t 10 -p "请输入一个数num2=" NUM2
echo "输入的值是num2=$NUM2"

函数

  • 系统函数

    basename命令会删掉所有前缀"/"之前的字符,显示后面部分

    [root@localhost shell]# basename /home/aaa/test.txt
    test.txt
    # 去掉后缀
    [root@localhost shell]# basename /home/aaa/test.txt .txt
    test
    

    dirname 返回路径最后"/"前面的部分,与basename相反

    [root@localhost shell]# dirname /home/aaa/test.txt
    /home/aaa
    
  • 自定义函数

    #!/bin/bash
    
    function getSum(){
            SUM=$[$n1+$n2]
            echo "和是=$SUM"
    }
    
    read -p "请输入第一个数n1" n1;
    read -p "请输入第二个数n2" n2;
    
    #调用函数
    getSum $n1 $n2
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值