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
(()) 用来计算 [[]]用来判断