Linux 初识shell脚本

1.脚本编程shell

shell 一个能编写代码的文件编辑器和一个能解释执行的脚本解释器
Linux 的 Shell 种类众多,常用的有:

Bourne Shell(/usr/bin/sh或/bin/sh)
Bourne Again Shell(/bin/bash)
C Shell(/usr/bin/csh)
K Shell(/usr/bin/ksh)
Shell for Root(/sbin/sh)
运行流程
chmod +x ./test.sh
sh ./test.sh
./test.sh

2.常用的脚本关键字

echo打印文字到屏幕
exec执行另一个 Shell 脚本
read读标准输入
expr对整数型变量进行算术运算
test用于测试变量是否相等、 是否为空、文件类型等
exit退出

脚本例子流程

>su - hr
>vi test.sh         //脚本文件后缀 .sh
#!/bin/bash         //    #!是⼀个约定的标记,它告诉系统这个脚本需要什么解释器来执⾏,即使⽤哪⼀种 Shell
echo “hello world !”
>chmod +x test.sh
>sh ./test.sh
>hello world !

调用变量

$变量申明符号

3.变量类型

3.1.用户自定义变量

>vi custom_r.sh
#!/bin/bash
name=dd
echo $name
readonly name
name=xx
>echo $name

3.2.预定义变量

$0脚本文件名
$1-9第 1-9 个命令行参数名
$#命令行参数个数
$@所有命令行参数
$*所有命令行参数
$?前一个命令的退出状态,可⽤于获取函数返回值
$$执行的进程 ID

vi predef.sh

#!/bin/bash
echo "print $"
echo "\$0 = $0"
echo "\$1 = $1"
echo "\$2 = $2"
echo "\$# = $#"
echo "\$@ = $@"
echo "\$* = $*"
echo "\$$ = $$"
echo "\$? = $?"
>chmod +x predef.sh
>./predef.sh 1 2 3 4
>./predef.sh a b c d

3.3. 环境变量

环境变量默认就存在,常用的有下面这几个:

HOME用户主目录
PATH系统环境变量 PATH
TERM当前终端
UID当前用户 ID
PWD当前做目录,绝对路径
>vi test_env.sh
#!/bin/bash
echo "print env"
echo $HOME
echo $PATH
echo $TERM
echo $PWD
echo $UID
>chmod +x test_env.sh
>sh test_env.sh

4.unset 删除变量

readonly 标记为只读变量
export 指定全局

4.1.运算符号

+ - * /分别为 加、减、乘、除
$ !AND、OR、NO

4.2.整数比较

eq 等于,:if [ “a"−eq" a" -eq "a"−eq"b” ]
-ne 不等于,:if [ “a"−ne" a" -ne "a"−ne"b” ]
-gt大于 ,:if [ “a"−gt" a" -gt "a"−gt"b” ]
-ge 大于等于,:if [ “a"−ge" a" -ge "a"−ge"b” ]
-lt 等于,:if [ “a"−lt" a" -lt "a"−lt"b” ]
-le 小于等于,:if [ “a"−le" a" -le "a"−le"b” ]
< 小于(需要双括号),:((“a&quot;&lt;&quot; a&quot; &lt; &quot;a"<"b”))
<= 小于等于(需要双括号),:((“a&quot;&lt;=&quot; a&quot; &lt;= &quot;a"<="b”))
> 大于(需要双括号),:((“a&quot;>&quot; a&quot; &gt; &quot;a">"b”))
>= 大于等于(需要双括号),:(("a&quot;>=&quot; a&quot; &gt;= &quot;a">="

字符串比较

= 等于,:if [ “a&quot;=&quot; a&quot; = &quot;a"="b” ]
== 等于,:if [ “a&quot;==&quot; a&quot; == &quot;a"=="b” ],=等价

5.常见运算

m=$[ m + 1 ]
m=expr $m + 1 # ` 字符包起来 expr 全局变量
let m=m+1
m=$(( m + 1 ))
vi add_one.sh
#!/bin/bash
m=1
m=$[ m + 1 ]
echo $m
m=`expr $m + 1`
echo $m
let m=m+1
echo $m
m=$(( m + 1 ))
echo $m

脚本例子

#!/bin/bash
a=10
b=20
if [ $a == $b ] 
 then
  echo "a=b"
else
  echo "a!=b"
fi


read -t 30 -p "input :" x
if [ $x == 5 ]
  then
  echo "x is 5"
else
  echo "x is not 5"
fi

6.数组

所谓数组,是有序的元素序列。
[name] 若将有限个类型相同的变量的集合命名,那么这个名称为数组名。
组成数组的各个变量称为数组的分量,也称为数组的元素

x=1
echo $x
days=([0]=Sun [1]=Mon [2]=Tue [3]=Wed [4]=Thu  // 数组名字=[定义]=元素)
[5]=Fri [6]=Sat)
echo ${days[$x]}
echo ${days[4]}
echo ${days[5]}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值