网站首页 > 基础教程 正文
刚刚接触Linux的时候可能会混淆一个概念:shell与bash,这两者之间的关系也都是模模糊糊的,使用Windows系统的人可能对shell没啥感觉,因为只需要点点鼠标,计算机就能安装我们的需求进行相关的操作,那么为什么计算机就能设别我们的操作呢,人机有别,人的语言,机器怎么会懂呢,这时就需要一个翻译,将语言动作翻译给机器 ,shell就是充当人与计算机之间的翻译官。
在linux中图形界面不是很强,大部分都是通过命令进行系统控制,所以shell就是显得特别重要,来看看官方的定义
Unix shell:一种壳层与命令行界面,是Unix操作系统下传统的用户和计算机的交互界面。
普通意 义上的shell就是可以接受用户输入命令的程序。它之所以被称作shell是因为它隐藏
了操作系统低层的细节。Unix操作系统下的shell既是用户交互的界面,也是控制系统的脚本语言。
bash是shell的一种,大多数Linux系统默认使用的shell,bash shell是Bourne shell 的一个免费版本,它是最早的Unix shell,bash还有一个特点,可以通过help命令来查看帮助。包含的功能几乎可以涵盖shell所具有的功能,所以一般的shell脚本都会指定它为执行路径。
csh是shell的另一种,C shell 使用的是“类C”语法,csh是具有C语言风格的一种shell,其内部命令有52个,较为庞大。目前使用的并不多,已经被/bin/tcsh所取代。
Korn是shell的另一种, Korn shell 的语法与Bourne shell相同,同时具备了C shell的易用特点。许多安装脚本都使用ksh,ksh 有42条内部命令,与bash相比有一定的限制性。
? 变量
#= 左右不要有空格
a=1
b=seveniruby
d="hello from testerhome"
#如果内容有空格,需要使单引号或者双引号
e='hello from "bash学习" '
#双引号支持转义 $开头的变量会被自动替换
双引号用于括起一段字符串值,支持$var形式的变量替换
单引号也表示其内容是字符串值,不支持转义
$’\n’ ANSI-C 引用
\ 反斜线,某些情况下表示转义
((a=a+3)) 是整数扩展。把里面的变量当作整数去处理
$(ls) 执行命令并把结果保存为变量 简写为``
变量类型
布尔 true false
数组 array=(a b c)
函数 foo() { echo hello world }
字符串操作
取值
${value:offset} ${value:offset:length} 从变量中提取字符串
${#array[*]}和${#array[@]}表示数组中元素的个数
掐头去尾与内容替换
${value#pattern} ${value##pattern} pattern} #表示掐头
${value%pattern} ${value%%pattern} %表示去尾
${value/pattern/string} ${value//pattern/string} /替换
#与## %与%% /与//的区别:最短匹配模式VS最长匹配模式
${var/#Pattern/Replacement} ${var/%Pattern/Replacement}
AWK可以替代这些操作,推荐使用AWK
算术判断
? [ 2 –eq 2 ] 相等
? [ 2 –ne 2 ] 不等
? [ 3 –gt 1 ] 大于
? [ 3 –ge 3 ] 大于等于
? [ 3 –lt 4 ] 小于
? [ 3 –le 3 ] 小于等于
(())也可以表示算术比较。 ((10>=8)) ,((10==10)),
字符串比较
[ string1 = string2 ] 如果两字符串相同,则结果为真
[ string1 != string2 ] 如果两字符串不相同,则结果为真
[ -n "$var" ] 如果字符串不是空,则结果为真
[ -z "$var" ] 如果字符串是空,则结果为真
[[ "xxxx" == x* ]] 在表达式中表示0或者多个字符
[[ xxx == x?? ]] 在表达式中表示单个字符
? 逻辑控制
条件 if, 分支case select ,循环 for while until,break 和continue
if结构的语句如下
if [ condition ] ; then …;fi
if [ condition ] ; then …;else …;fi
简单的逻辑可以使? && || 去替代
for循环
for(( c1 ; c2 ; c3 ));
do
...;
done
for((i=0;i<10;i++));do echo $i;done
For 循环遍历
用于递归数组,还可以递归以空格隔开的字符串序列。或者是某个命令的返回值
for f in $array[*]; do
....
done
退出控制
return 函数返回
exit 脚本进程退出
break 退出当前循环
continue 跳过当前的循环,进入下次循环。
猜你喜欢
- 2024-10-12 这个为生信学习打造的开源Bash教程真香!!(目录更新)
- 2024-10-12 Shell 函数(杰哥教你Linux) shell中函数
- 2024-10-12 Linux下程序是怎样执行的 linux怎么执行程序
- 2024-10-12 这几个常用 alias,带你高效做事(下)
- 2024-10-12 Shell脚本:函数语法以及实例讲解 shell脚本入门详解
- 2024-10-12 Bash函数:ucase、lcase:借助perl一键转换字符串为大小或小写
- 2024-10-12 Bash Shell制作菜单3部曲:1简单交互菜单|Linux|运维|嵌入式
- 2024-10-12 Bash脚本中的用户交互:暂停、等待按键和倒计时的实现方法
- 2024-10-12 bash问题:是否有函数可以返回字符串的长度?
- 2024-10-12 shell脚本编程高级用法和函数,并举例说明
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)