shell基础命令

一、shell脚本命令

1.shell脚本第一行解释:

#! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell

2.创建一个目录:

mkdir crtest
3.切换到指定目录crtest
3.1vim test01.sh 按回车进入编辑界面
i :在当前位置插入
a:在当前位置后追加
o:在当前位置的后面插入一行
I :在行头插入
A:在行尾追加
O:在当前位置的前面插入一行
‘ESC’键从编辑模式转换到阅读模式
3.2.阅读模式(或叫命令模式)下:
:w 保存文件
:w filename 保存成filename文件
:q 退出
:q! 强行退出
:w! 强行写
:wq 保存退出 (等价输入两个ZZ)
:x 同wq
4.按键盘中的i进入创建模式
第一行指定解释器:
#! /bin/bash
#Date : 2022-02-12
#Author : chenran
#Vertion : 1.0
echo “hello shell” 
输出:hello shell
5.执行脚本
方式一:/bin/bash/test01.sh --不需要授权
方式二:./test01.sh
赋权:chmod 777 test01.sh
6.shell变量
全局变量:永久生效
普通变量:作用于运行期间,退出shell变量失效
a = 20 --内容纯数字不需要加引号
echo ${a}
将命令的结果作为变量的内容赋值:time = $(date)
echo ${time} --等价于:echo $(date)
特殊变量:
$0:获取当前执行shell脚本的文件名,如果执行脚本包含了路径,那就包含路径名
$n:获取当前执行的shell脚本的第n个参数,n=1....9,当n为0时表示脚本的文件名,如果n>9,则用大括号括起来,例如${10}
echo $0
------------------------
echo $1
执行:./test01.sh 输出为:空
执行:./test01.sh start 输出为:start --取第一个参数
$#:获取当前执行的shell脚本后面接的参数的总个数
echo $#
执行:./test01.sh start stop 输出:2
$?:获取执行上一个指令的执行状态返回值(0为成功,非零为失败)
echo $#
echo $?
执行:./test01.sh start stop 输出:2,0
表示执行echo $#成功
 

二、运算命令

加法:echo $((1+2)) 
输出:3
除法:echo $((3/2))
输出:1
i=10
echo $((i++))   
输出:10
echo $((++i))     
输出:11

 

 

三、条件表达式:

[ 5 -eq 3 ] && echo "true" || echo "false"
输出:false
注:操作符中间严格注意空格
[ "hello" -eq "hello" ] && echo "true" || echo "false"
输出:true
[  -n "hello"  ] && echo "true" || echo "false"
输出:true
[ -d /data/crtest/ ] && echo "true" || echo "false"
输出:true
[ -f /data/crtest/test01.sh ] && echo "true" || echo "false"
输出:true
[ -e /data/crtest/test01.sh ] && echo "true" || echo "false"
输出:true
[ -e /data/crtest/test01.sh -a -z "aa" ] && echo "true" || echo "false"
输出:false
分析:/data/crtest/test01.sh文件存在为真,”aa“长度不为0为假,真&&假=》假

 

 

四、流程控制结构

 
if  [ -e /data/crtest/test01.sh ];then
       echo "true"
fi
输出:true

 

if [ $1 == "a" ]; then
      echo "a"
elif [ $1 == "b" ]; then
      echo "b"
else
      echo "c"
fi

执行:./test01.sh a   
输出:a

 

 

 

i=1
while  [ ${i} -le 10 ]
do
        echo ${i}
         ((i++))
done
输出:1~10
     
案列二:求和
i=1
sum=0
while  [ ${i} -le 10 ]
do
         sum=$((sum + i))
         ((i++))
done
echo ${sum}
输出:55

 

注:

exp1:对变量进行初始化
exp2:条件表达式
exp3:变量更改条件表达式

方式一:
for i in 1 2 3 4 5 6 7 8 9 10
do 
          echo ${i}
done
输出:1~10

方式二:
for ((i=1; i<=10; i++))
do
     echo ${i}
done
输出:1~10

 

 

 

posted @ 2022-01-17 17:43  然后呢。。。  阅读(59)  评论(0编辑  收藏  举报