当前位置: 首页 > article >正文

shell简单使用介绍

脚本的基本元素

  1. 声明,在解释并执行当前脚本文件中的语句之前,需要声明使用的命令解释器

#一般写的解释器为
#!/bin/bash

这里的#不再是注释了,而是必要的声明

  1. 命令,也就是需要执行的语句

  1. 注释,对代码进行解释说明

分为单行注释和多行注释

单行注释 以#开头的一整行
#这里是注释
#这里也是注释

多行注释 使用冒号“:”配合here document可实现
:<<block 
这里是注释
这里也是注释
这里还是注释
block
  1. 赋予rx的权限

shell脚本编写规则

  1. 建议脚本文件名应该简单清晰明了,看了就知道意思

  1. 文件开头指定脚本解释器 #!/bin/sh或者#!/bin/bash

  1. 在开头写明版本特权等信息

  1. 尽量使用英文注释

shell常用的命令

echo

echo是用于终端打印的基本命令,默认情况下,echo 在每次调用后会添加一个换行符

[root@localhost shell]# echo hello
hello
[root@localhost shell]# echo "hello world"
hello world
[root@localhost shell]# echo "hello;world"
hello;world
[root@localhost shell]# echo hello;world
hello
bash: world: command not found...
Failed to search for file: /mnt/BaseOS was not found

#注意这里的双引号""用来包含整个语句,防止被;打断语句

echo参数

说明

-n

不换行输出

-e

解析转义字符

\n

换行

\r

回车

\t

制表符

\b

退格

\v

纵向制表符

[root@localhost shell]# echo -n why so serious
why so serious[root@localhost shell]# 
[root@localhost shell]# echo -e why\tso\tserious
whytsotserious
[root@localhost shell]# echo -e "why\tso\tserious"
why    so    serious

eval

命令格式:eval args

功能:当shell程序执行到eval语句时,shell读入参数args,并将它们组合成一个新的命令,然后执行

[root@localhost shell]# a='shuju;head -1 /etc/passwd'
[root@localhost shell]# echo $a
shuju;head -1 /etc/passwd
[root@localhost shell]# eval echo $a
shuju
root:x:0:0:root:/root:/bin/bash

exec

命令能够在不创建新的子进程的前提下,转去执行指定的命令,当指定的命令执行

完毕后,该进程就终止了

export

export设置或者显示环境变量

read

read 是一个重要的 bash 命令,用于从键盘或标准输入读取文本,我们可以使用 read 命

令以交互形式读取来自用户的输入

通常我们按下回车键表示命令输入完成,但是很特殊情况下,我们需要基于字符数或者

特定字符来表示命令输入完成

-p prompt:设置提示信息
-t timeout:设置输入等待时间,单位默认为秒
[root@localhost shell]# read -t 10 -p "please input your name:" name
please input your name:me
[root@localhost shell]# echo $name
me
[root@localhost shell]# echo -n "please input your name:"; read name1 name2
please input your name:me you
[root@localhost shell]# echo $name1
me
[root@localhost shell]# echo $name2
you

shift

在程序中每使用一次shift语句,都会使所有的位置参数依次向左移动一个位置,

并使位置参数$#减1,直到减到0为止

exit

退出shell程序

shell脚本的执行方式

  • bash ./filename.sh——产生子进程,再运行,使用当前指定的bash shell去运行

  • ./filename.sh

产生子进程,再运行,使用脚本里面指定的shell去运行。使用该种方式

执行需要x权限

  • source ./filename.sh

source命令是一个shell内部命令,其功能是读取指定的shell程

序文件,并且依次执行其中的所有的语句,并没有创建新的子shell进程,所以脚本里面所有创

建的变量都会保存到当前的shell里面

  • .filename.sh——和source一样,也是使用当前进程执行

首选我们写一个以 .sh结尾的文件

vim read01.sh

#!/bin/bash

read -n1 -p "DO you want wo continue [Y/N]" answer
case $answer in
        Y|y)
echo "fine,continue";;
        N|n)
echo "ok,good bye";;
        *)
echo "error choice";;
esac
exit 0

使用各种方法执行它

这里使用第一种方法

[root@localhost shell]# bash ./read01.sh 
DO you want wo continue [Y/N]yfine,continue


http://www.kler.cn/a/2811.html

相关文章:

  • AI 写作(五)核心技术之文本摘要:分类与应用(5/10)
  • Spring Cloud Contract快速入门Demo
  • 使用@react-three/fiber,@mkkellogg/gaussian-splats-3d加载.splat,.ply,.ksplat文件
  • 【LeetCode】【算法】55. 跳跃游戏
  • OpenGL【C++】台灯
  • python数据写入excel文件
  • KafKa知识汇总
  • 大模型未来趋势
  • 【C++进阶】十一、哈希的应用---布隆过滤器(二)
  • Element table组件内容\n换行解决办法
  • 【C++】STL容器、算法的简单认识
  • 【CodeForces】Codeforces Round 859 (Div. 4) D
  • 看完这篇 教你玩转渗透测试靶机vulnhub——My File Server: 1
  • Android11以上版本使用高德定位,定位成功,卫星数一直为0
  • 【TypeScript 入门】14.泛型
  • 微软Bing GPT支持AI绘画了,输入文字就能出图
  • 值得记忆的STL常用算法,分分钟摆脱容器调用的困境,以vector为例,其余容器写法类似
  • Kotlin~Singleton单例模式
  • 文心一言 vs GPT-4 —— 全面横向比较
  • Halcon转OpenCV实例--纺织物折痕检测(附源码)
  • 防火墙和IDS
  • javaScript防抖与节流函数
  • 如何高效的导出 百万级别的数据量 到 Excel?
  • vscode 常用插件记录
  • 交通信号标志识别软件(Python+YOLOv5深度学习模型+清新界面)
  • leetcode每日一题:1005. K 次取反后最大化的数组和