大数据手册(Linux)--Linux基础知识(Part 2 ~ Shell 教程)

目录


大数据手册(Linux)–Linux基础知识(Part 1)
大数据手册(Linux)–Linux基础知识(Part 2 ~ Shell 教程)


Shell简介

Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。

Shell 注释以”#”开头的行就是注释,会被解释器忽略。sh里没有多行注释,只能每一行加一个#号。

Shell 变量

  • 定义变量时,变量名和等号之间不能有空格
  • 还可以用控制/循环语句给变量赋值
  • 使用变量,只要在变量名前面加美元符号$即可
  • 变量名外面加{},可以识别边界
  • readonly 命令可以将变量定义为只读变量
  • unset 命令可以删除变量

example

your_name="runoob.com"  #赋值定义
for skill in Ada Coffe Action Java; do
    echo "I am good at ${skill}Script"
done

readonly your_name  #只读
echo $your_name  #引用变量
unset your_name  #删除变量

Shell 字符串

字符串可以用单引号,也可以用双引号,也可以不用引号。

  • 单引号里的任何字符都会原样输出
  • 单引号字符串中的变量是无效的
  • 双引号里可以有变量
  • 双引号里可以出现转义字符
  • 获取字符串长度${#string}
  • 字符串切片${string:start:stop}
str='string'
greeting="hello, ${str} !\n"
echo ${#str} # 输出6
echo ${str:1:4} # 输出 trin

Shell 数组

array_name=(value0 value1 ... valuen) #空格或换行定义数组
array_name[n]=valuen  #单独定义数组分量
  • ${array_name[n]}引用数组元素
  • ${array_name[@]}引用整个数组
  • ${#array_name[@]} or ${#array_name[*]}获取数组长度
  • ${#array_name[n]}获取数组元素的长度

Shell 传递参数

参考链接

Shell 基本运算符

  • 原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。完整的表达式要被 ` `包含
  • 表达式和运算符之间要有空格,例如 2+2 是不对的,必须写成 2 + 2,这与我们熟悉的大多数编程语言不一样。
#!/bin/bash
val=`expr 2 + 2`
echo "两数之和为 : $val"
算术运算符 说明 举例
+ 加法 expr $a + $b
- 减法 expr $a - $b
* 乘法 expr $a \* $b
/ 除法 expr $b / $a
% 取余 expr $b % $a
= 赋值 a=$b
关系运算符 数字 字符串
相等 [a -eq b] or [a == b] [str1 = str2]
不等 [a -ne b] or [a != b] [str1 != str2]
大于 [a -gt b]
小于 [a -lt b]
大于等于 [a -ge b]
小于等于 [a -le b]
字符串长度为0 [ -z str ]
字符串长度不为0 [ -n str ]
字符串为空 [str $a ]
逻辑运算符 true or false
[ ! bool ]
[ b1 -o $b b2 ]
[ b1 -a b2 ]
[[b1 && b2]] and
[[b1 || b2]] or
文件测试运算符 说明
[ -d file ] 检测文件是否是目录
[ -f file ] 检测文件是否是普通文件(既不是目录,也不是设备文件)
[ -r file ] 检测文件是否可读
[ -w file ] 检测文件是否可写
[ -x file ] 检测文件是否可执行
[ -s file ] 检测文件是否为空(文件大小是否大于0)
[ -e file ] 检测文件(包括目录)是否存在

Shell 流程控制

1. if 语句

if condition1
then
    command1
elif condition2 
then 
    command2
else
    commandN
fi

if condition; then command; fi #控制台单行

2. for 循环

for var in item1 item2 ... itemN
do
    command1
    command2
    ...
    commandN
done

for var in item1 item2 ... itemN; do command1; command2… done; #单行

3. while 语句

while condition
do
    command
done

4. until 循环

until 循环执行一系列命令直至条件为 true 时停止。

until condition
do
    command
done

5. case语句

Shell case语句为多选择语句。可以用case语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令。

case values in
val1)
    command1
    command2
    ...
    commandN
    ;;
val2)
    command1
    command2
    ...
    commandN
    ;;
esac

6. 跳出循环

break #跳出所有循环
continue #跳出当前循环

Shell 函数

function funname ()
{
    action;
    return int;
}

说明:

  • linux shell 可以用户定义函数,然后在shell脚本中可以随便调用。
  • 可以不带关键字function
  • 参数可以隐式加载
  • return可以省略(将以最后一条命令运行结果)

猜你喜欢

转载自blog.csdn.net/qq_41518277/article/details/80772546