Shell 学习[1] shell基本命令、if条件判断

2,126 阅读1分钟

Shell 学习(1)

可以看做是,用户和操作系统之间的命令解释器

结构:kernel(最底层),shell,utilites(用户)

最常用的shell是bash。

echo $BASH

shell是由各种命令组成的

vi fiest_shell.sh

#!/bin/bash 定义是shell脚本,会以shell的方式运行

#Filename: first_shell.sh 注解

echo "hello world"

怎么执行shell脚本?

chmod o+x fiest_shell.sh 给shell脚本加上运行权限

./first_shell.sh

或者使用/bin/bash first——shell.sh 这个就不需要加运行权限了,也是一样可以运行的

执行脚本和执行命令有什么区别?

比较方便一点吧,只需要执行一遍就可以了,脚本中命令要是很多的话,就会很方便。

shell编程的变量

Java、C++等语言需要实现声明变量,但是shell给一个变量赋值,设计上就是定义了变量,在Linux支持的所有shell中,都可以使用赋值符号(=)为变量赋值。

shell变量可以分为两类:局部变量和环境变量。局部变量只在创建他们的shell脚本中使用,而环境变量则可以在创建他们的shell及其派生出来的任意子进程中使用。有些变量使用户创建的,其他的则是专用的shell变量。

'''shell

A=123
echo "$A"
echo "this is my name $A"
echo $UID #UID=0 表示是root用户
echo $PWD #当前路径

#执行shell文件 sh var.sh

echo $0
echo $1 $2
在执行的时候会输出第一个参数和第二个参数

sh var.sh hss
$0 输出hss

shell 常见的系统变量解析

  • $0 当前程序的名称
  • $n 当前程序的第n个参数
  • $* 当前程序的所有参数(不包括程序本身)
  • $# 当前程序的参数个数(不包括程序本身)
  • $? 命令或程序执行完成后的状态,一般返回0表示执行成功
  • $UID

'''shell

echo "the \$? is $?"
echo "the \$# is $#"
echo "the \$* is $*"

随意输出一个错误的命令
再次执行echo $?的时候,返回的不是0

shell if 条件语句

'''shell

#!/bin/sh
NUM=100
if(($NUM>4)) ; then
    echo "this num is $NUM greater 4!"
fi
(())表示比较

NUM1=100
NUM2=200
if((#NUM1>NUM2));then
    echo "this $NUM! > $NUM2"
else
    echo "this $NUM2 < $NUM1"
fi

判断目录是否存在
DIR=/temp/ahh
if [ !-d $DIR];then
    mkdir -p $DIR
    echo  "create success"
else 
    echo "exists"
fi

/bin/bash -n **.sh 测试shell脚本是否有错误,没有错误的话,不会进行输出
/bin/bash **.sh

判断文件是否存在-f
if [-f #FILE];then    #判断文件是否存在 
if [! -f $FILE];then  #判断文件是否不存在
    echo "OK">>$FILE #>>是追加的意思
else
    cat $FILE


多个条件判断测试
if [[$score -ge 85]];then
    echo "very good"
elid [[]];then
    echo ""
else
    echo ""
fi

'''shell

example:
#!/bin/bash
#by hss 2019

score=$1
if [-z $score ];then #判断输入的参数是不是为空
    echo "usage:{$0 60|80}"
    exit
fi
if [[$score -gt 60]] ;then
    echo "success"
else 
    echo "ahhh"
fi

(()) 用来计算 [[]]用来判断