linux之shell

1.shell

1.1什么是shell

Shell是一个用C语言编写的程序,它是用户使用Linux的桥梁。
Shell既是一种命令语言, 又是一种程序设计语言。
Shell是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问Linux内核的服务。
Ken Thompson的sh是第一种Unix Shell, Windows Explorer是一个典型的图形界面Shell。

1.2什么是shell脚本

1.2.什么是shell脚本
Shell脚本(shell script),是- -种为shell编写的脚本程序,一-般文件后缀为 .sh。

业界所说的shell 通常都是指shell脚本,但shell和shell script是两个不同的概念。

1.3shell环境

Shell编程跟java、php 编程一样,只要有一个能编写代码的文本编辑器和一个
能解释执行的脚本解释器就可以了。

Shell的解释器种类众多,常见的有:

sh   -即Bourne Shell。sh是Unix标准默认的shell.
bash -即Bourne Again Shell。bash 是Linux标准默认的shell。
fish -智能和用户友好的命令行shell.
xiki -使shell控制台更友好,更强大。
zsh  -功能强大的shell与脚本语言。

指定脚本解释器
在shell脚本,
#!告诉系统其后路径所指定的程序即是解释此脚本文件的Shell解释器。

2.如何执行

2.1 创建后缀名为.sh的文件
touch test.sh

2.2打开文件进行编辑
vim test.sh

2.3指定bash解释器↔
#!/bin/bash

2.4编写代码

2.5执行
/root/test.sh 或者./test.sh

3.echo输出

echo '你好,世界'

4.变量

4.1变量命名原则

命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
中间不能有空格,可以使用下划线(_)。
不能使用标点符号。
不能使用bash里的关键字(可用help命令查看保留关键字)

4.2访问变量

访问变量的语法形式为: ${var} 和 $var

示例:
word="hello"
echo${word}

5.运算符

5.1算术运算符

+  加法
expr $X十py结果为30-  减法
expr $x- $y结果为-10*  乘法
expr $x * $y结果为200/  除法
expr$y/$x结果为2%  取余.
expr$y%$x结果为0=  赋值
x=$y将把变量y的值赋给X。

== 相等。
用于比较两个数字,相同则返回true[$x==$y]返回false
[$x== $y]

!= 不相等。
用于比较两个数字,不相同则返回true[$x!= $y]返回true

案例:
i=10;//定义i
j=20;
z=$((${i}+${j}));
echo ${z}//输出z

5.2关系运算符

-eq 检测两个数是否相等,相等返回true-ne 检测两个数是否相等,不相等返回true-gt 检测左边的数是否大于右边的,如果是,则返回true-It 检测左边的数是否小于右边的,如果是,则返回true-ge 检测左边的数是否大于等于右边的,如果是,则返回true-le 检测左边的数是否小于等于右边的,如果是,则返回true。
案例:
vim test.sh//进行编辑

i=10;
j=10;
if {[ ${i} -eq ${j} ]}
then
echo "i==j"
fi

5.3布尔运算符

 ! 非运算
-o 或运算
-a 与运算

5.4逻辑运算符

&& 逻辑的 AND

5.5字符串运算符

 =  检测两个字符串是否相等,相等返回true!=  检测两个字符串是否相等,不相等返回true.
-z  检测字符串长度是否为0,0返回true-n  检测字符串长度是否为0,不为0返回true.
str 检测字符串是否为空, 不为空返回true

5.6文件测试运算符

-b file
检测文件是否是块设备文件,如果是,则返回true.

-C file
检测文件是否是字符设备文件,如果是,则返回true-d file
检测文件是否是目录,如果是,则返回true-f file
检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回true-g file
检测文件是否设置了SGID位,如果是,则返回true.

-k file
检测文件是否设置了粘着位(Sticky Bit),如果是,则返true.

-p file
检测文件是否是有名管道,如果是,则返回true-u file
检测文件是否设置了SUID 位,如果是,则返回true-r file
检测文件是否可读,如果是,则返回true-W file
检测文件是否可写如果是,则返回true-X file
检测文件是否可执行,如果是,则返回true-S file
检测文件是否为空(文件大小是否大于0),不为空返回true-e file
检测文件(包括目录)是否存在,如果是,则返回true。

案例:
file="/root/a;
if [ -d ${file} ]
then
echo "if";
else
echo "else"
mkdir "/root/a"
fi

示例:
file=' "/绝对路径/a.sh"
if[-r $file ]
then
echo "[ -r \$file ]文件可读" 
else :
echo "[ -r \$file ]文件不可读"
fi

6.控制语句

6.1:if

[[]] (sh中是[])包起来的表达式被称作 检测命令 或 基元。
这些表达式帮助我们检测一个条件的结果。
这里可以找到有关bash中单双中括号区别的答案。
案例:
if[[ "abc" -eq "abc" ]]
then
echo""abc"-eq"abc"result is: true"
fi

6.2 if else语句

if[[ 2 -ne 1 ]];then
echo "true'
else 
echo"false'
fi

6.3 if elif else

i=10;
j=14;
if [[ ${i} -ge ${j} ]];then
echo "i=j";
elif [[ ${i} -ge ${j} ]];then
echo "i>=i";
else
echo "i!=j";
fi

6.4 for循环

for(( i= 0;i < 10;i++ )); do
echo ${i}
done

6.5while循环

x=1;
while [[ ${x}-lt 10]]; do 
echo $((x*x)
x=$((x + 1))
done

7.接收键盘输入

7.1 read

-t :等待时长
-p :提示信息
-n :接收内容
-S :隐藏输入

案例:
#!/bin/bash
read -t 3000 -s -p "请输入你的密码" pwd
echo -e "\n"
echo "你输入的内容是"${pwd}

read -t 3000 -n 6 -p "请输入你的密码" pwd
echo -e "\n"
echo "你输入的内容是"${pwd}

#提示 “请输入姓名” 并等待30秒,把用户的输入保存入变量name中I
read -t 30 -p "请输入用户名称:" name
echo -e "\n"
echo "用户名为:$name"

#提示“请输入密码”并等待30,把用户的输入保存入变量age中,输入内容隐藏
read -t 30 -s -p "请输入用户密码:" age
echo-e "\n"
echo "用户密码为:$age"

#提示"请输入性别”并等待30,把用户的输入保存入变量sex中,只接受一个字符输入
read -t 30 -n 1 -p "请输入用户性别:" sex
echo-e "\n"
echo "性别为$sex'

案例

touch test.ch//创建一个文件
ll//查看
chmod u+x test/sh//设置权限
ll

vim test.sh//进行编辑
#!/bin/bash
#第一行的代码
echo "第一行基本的代码"
:wq//保存
cat test.sh//查看编辑的内容
/root/test.sh//执行当前命令

//变量
vim test.sh//进行编辑
index=10;
echo ${index};
/root/test.sh//执行

if语句
if[[ "abc" -eq "abc" ]]
then
echo""abc"-eq"abc"result is: true"
fi

if else if语句
if(启动)[[ 2 -ne 1 ]];then
echo "true'
else 
echo"false'
fi(结束)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值