linux---Shell编程

目录

c/c++、java、shell的区别

了解shell脚本语言

shell基本语法

变量

1.本地变量

 2.环境变量

3.参数变量

条件

一个小小的应用

循环

函数、

脚本调用/c语言调用脚本、

常用命令(awk、sed)


c/c++、java、shell的区别

c/c++编译型语言,不能直接运行,执行效率比较高

.c/.c++---->.exe

生态:开源网络库、做大型应用软件、物联网、嵌入式(智慧农业、硬件设备,控温的)做界面qt、服务器后端开发中间件、redis

Java:既需要解释器,也需要编译

 .java--->.class---->.exe

(编译器生成)calss文件(是二进制的),需要用解释器(java虚拟机),隐藏了虚拟机,编代码方便,有内存回收机制,不用考虑内存(指针啥东东)

生态:大数据开发、云计算、有很多好的大的框架(特别成熟)

shell编程需要解释器来解释执行,(解释器例如bash)

了解shell脚本语言

脚本程序一般以xx.sh结尾,但不是必须的

//以下为脚本文件my.sh

#!/usr/bin/bash   ///指定解释器

echo "hello"

exit 0;
#bash my.sh
//运行my.sh文件
//输出 hello

bash其实是播放器,my.sh就是音乐

chmod u+x my.sh   //增加运行权限

./my.sh           //用解释器来运行my.sh
which python3    //查找python文件所在文件夹

vi a.py//打开新文件

print("hello py")

exit(0)

///python3 a.py  :打开python文件
///或者chmod u+x a.py   :增加权限打开文件

使用脚本优先完成

shell基本语法

变量

1.本地变量

#!/usr/bin/bash   //#!有着特殊命令,/usr/bin/bash 解释器的位置

#本地变量    //#代表屏蔽
str=hello
a="123"//1.直接赋值

echo "a=$a" //打印//$表名要取变量的值 a与前面无关
echo='a=$a' 

exit 0

输出:
a=123
a=$a

str=hello
mystr=$str //2.$赋值

read line ///3.从键盘获取

//在定义变量的时候=左右两边不允许有空格 

#三种赋值

str=hello
a="123"//1.直接赋值

mystr=$str //2.$赋值

read line ///3.从键盘获取

 2.环境变量

#!/usr/bin/bash 

#环境变量:从父进程获取
echo  psth=$PATH
// $PS1:把命令提示符改为自己喜欢的样式

echo "\$0=$0"  ///使用\,让$失去原有的作用
echo "\$#=$#"
echo "\$$=$$"

3.参数变量

#!/usr/bin/bash 

#参数变量
eco  psth=$PATH

echo "\$1=$1" //打印出第一个参数
echo "\$2=$2" //打印出第二个参数值
echo "\$3=$3" //打印出第三个参数值

echo "\$0=$0"  //名称
echo "\$#=$#"  //变量个数
echo "\$$=$$"  //pid的值(进程号)

#运行命令:.\my.sh  hello 123 a
#输出结果:
$1=hello
$2=123
$3=a
$0=./my.sh 
$#=3
$$=21372

条件

#!/usr/bin/bash
#三种条件

if test -f fred.c
then
...
fi
#还可以
if [ -f fred.c ]
then 
...
fi
//以下为例子

echo "input"
read line

if ["$line" = "123" ]//必须要有空格
then
    echo "=="
fi
#或者
if test "$line" = "123"
then
    echo "=="
fi

#if else语句
if ["$line" = "123" ]//必须要有空格
then
    echo "=="
else
    echo "!="
fi
#算术运算
#语法大致和C语言一致
#判断输入的值在0到100之间
if [ "$line" -gt "0" ] && [ "line" -lt "100" ] //-gt是大于的意思 -lt是小于的意思
then
     echo "0 < $line <100"
fi

#判断给入的文件名是目录还是普通文件
if [ -d "$line" ]  //-d判断是不是目录文件
then
    echo "$line is dirent"
elif [ -f "$line" ]  //-f判断是不是普通文件
then
    echo "$line is file"
else
    echo "$line not find"
fi

一个小小的应用

给出成绩给评分A、B、C、D

#!/usr/bin/bash

input="请输入成绩:"
read line
    echo "请稍等"

if [ "$line" -lt "0" ] || [ "$line" -gt "100" ]
then
    echo "输入错误!"
    exit  1
fi
#请你千万不要忘记写fi

if [ "$line" -gt "0" ] && [ "$line" -lt "60" ] 
then 
    echo "D"
elif [ "$line" -ge "60" ] && [ "$line" -lt "70" ]//-ge是大于等于的意思
then
    echo "C"
elif [ "$line" -ge "70" ] &&[ "$line" -lt "80" ]
then 
    echo "B"
else
    echo "A"
fi

算术比较不能有字母,一有字母就崩掉 

循环

#!/usr/bin/bash
#for循环
for i in 1 2 3 
do 
    echo i=$i
    sleep 1
done

for i in $str
do 
    echo i=$i
    sleep 1
done

#while循环
i=0
while true#条件也可以为true,陷入死循环
do
    echo "520"
done

while [ $i -lt 10 ]
do
    echo "$i"
    i=`expr $i + 1`#执行i+=1
    let "i+=1"     #执行i+=1
done

#until循环
until  condition 
do 
    statement
done


#一些算术运算
i=1
let "i+=1"
i=` expr $1 \* 3`
echo "i=$i"

函数

#函数定义
fun()
{
    echo "fun run"
}
#调用
fun
#函数的参数

脚本调用/c语言调用脚本、

常用命令(awk、sed)

awk -F. '{print $1}' file > a.txt

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本书共分五部分,详细介绍了shell编程技巧,各种UNIX命令及语法,还涉及了UNIX下的文字处理以及少量的系统管理问题。本书内容全面、文字简洁流畅,适合Shell编程人员学习、参考。 目 录 译者序 前言 第一部分 shell 第1章 文件安全与权限 1 1.1 文件 1 1.2 文件类型 2 1.3 权限 2 1.4 改变权限位 4 1.4.1 符号模式 4 1.4.2 chmod命令举例 5 1.4.3 绝对模式 5 1.4.4 chmod命令的其他例子 6 1.4.5 可以选择使用符号模式或绝对模式 7 1.5 目录 7 1.6 suid/guid 7 1.6.1 为什么要使用suid/guid 8 1.6.2 设置suid/guid的例子 8 1.7 chown和chgrp 9 1.7.1 chown举例 9 1.7.2 chgrp举例 9 1.7.3 找出你所属于的用户组 9 1.7.4 找出其他用户所属于的组 10 1.8 umask 10 1.8.1 如何计算umask值 10 1.8.2 常用的umask值 11 1.9 符号链接 12 1.9.1 使用软链接来保存文件的多个映像 12 1.9.2 符号链接举例 12 1.10 小结 13 第2章 使用find和xargs 14 2.1 find命令选项 14 2.1.1 使用name选项 15 2.1.2 使用perm选项 16 2.1.3 忽略某个目录 16 2.1.4 使用user和nouser选项 16 2.1.5 使用group和nogroup选项 16 2.1.6 按照更改时间查找文件 17 2.1.7 查找比某个文件新或旧的文件 17 2.1.8 使用type选项 17 2.1.9 使用size选项 18 2.1.10 使用depth选项 18 2.1.11 使用mount选项 18 2.1.12 使用cpio选项 18 2.1.13 使用exec或ok来执行shell命令 19 2.1.14 find命令的例子 20 2.2 xargs 20 2.3 小结 21 第3章 后台执行命令 22 3.1 cron和crontab 22 3.1.1 crontab的域 22 3.1.2 crontab条目举例 23 3.1.3 crontab命令选项 23 3.1.4 创建一个新的crontab文件 24 3.1.5 列出crontab文件 24 3.1.6 编辑crontab文件 24 3.1.7 删除crontab文件 25 3.1.8 恢复丢失的crontab文件 25 3.2 at命令 25 3.2.1 使用at命令提交命令或脚本 26 3.2.2 列出所提交的作业 27 3.2.3 清除一个作业 27 3.3 &命令 27 3.3.1 向后台提交命令 28 3.3.2 用ps命令查看进程 28 3.3.3 杀死后台进程 28 3.4 nohup命令 29 3.4.1 使用nohup命令提交作业 29 3.4.2 一次提交几个作业 29 3.5 小结 30 第4章 文件名置换 31 4.1 使用* 31 4.2 使用? 32 4.3 使用[...]和[!...] 32 4.4 小结 33 第5章 shell输入与输出 34 5.1 echo 34 5.2 read 35 5.3 cat 37 5.4 管道 38 5.5 tee 39 5.6 标准输入、输出和错误 40 5.6.1 标准输入 40 5.6.2 标准输出 40 5.6.3 标准错误 40 5.7 文件重定向 40 5.7.1 重定向标准输出 41 5.7.2 重定向标准输入 42 5.7.3 重定向标准错误 42 5.8 结合使用标准输出和标准错误 43 5.9 合并标准输出和标准错误 43 5.10 exec 44 5.11 使用文件描述符 44 5.12 小结 45 ... ...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值