shell基础整理

shell

学习整理
参考博客:https://www.cnblogs.com/yinheyi/p/6648242.html

shell是一种脚本语言,常见的脚本解释器有:

  • bash:是Linux标准默认的shell。
  • sh:是unix标准默认的shell。
  • 另外还有:ash、csh、ksh等。

shell脚本

!/bin/bash

!是一种约定标记,它可以告诉系统这个脚本需要什么样的解释器来执行。

变量

定义变量

number=100
country="china"
  • 首字母必须是字母
  • 中间不能有空格,可以使用下划线
  • 不能使用标点符号
  • 不能使用关键字

使用变量

在定义过的变量前面加上$符号就可以了。另外,对于变量的{}是可以选择的,帮助解释器识别变量的边界。

echo $number
echo "i love my country${country}"

重定义变量

直接重新赋值就可以了

只读变量

readonly home="jiangsu"

删除变量

unset variable_name

变量类型

运行shell时,同时存在三种变量

  • 局部变量
    • 局部变量是在脚本或命令中定义,仅在当前shell实例中有效。
  • 环境变量
    • 所有的程序都可以访问的变量。
  • shell变量
    • shell变量是由shell程序设置的特殊变量,shell变量中有一部分是环境变量,有一部分是局部变量。

特殊变量

$?可以获取上一个命令的退出状态。就是上一个命令执行后的返回结果。成功返回0。

shell中的替换

echo中的转义符:

使用echo -E禁止转义,默认也是不转义的。

echo -e可以对转义字符进行替换。

命令替换

把一个命令的输出复制给一个变量,方法是使用反引号``

directory=`pwd`
echo $directory

变量替换

shell运算符

a=10
b=29
expr $a + $b

expr的乘法为\* 除法/

expr的表达式和运算符之间要有空格;

关系运算符

只支持数字。

布尔运算符

  • ! 非 [!fales]返回true
  • -o 或运算
  • -a 与运算

字符串运算符

文件测试运算符

Unix文件的各种属性。

shell中的字符串

  • 单引号
    • 单引号的任何字符都会原样输出,单引号字符串中的变量是无效的;
    • 单引号字符串中不能出现单引号;
  • 双引号
    • 双引号里可以有变量
    • 双引号里可以出现转义字符

字符串的拼接

country="China"
echo "hello, $country"
#也可以
echo "hello, "$country" "

获取字符串的长度

string='abcd'
echo ${#string}

提取子字符串

string="alibaba is a great company"
echo ${string:1:4} #输出liba

查找字符串

string="alibaba is a great company"
echo `expr index "$string" is`

处理路径的字符串

bashename 得到文件名

bashename -a 表示处理多个路径 -s表示去掉指定文件的后缀名

bashname /home/1.txt   1.txt

得到路径名,不带文件名 使用dirname

dirname /home/1.txt  >   /home

shell的数组:

bash支持一位数组,不支持多为数组。

array_name=(1 2 3 4)
array_name[0]=value0
array_name[1]=value1

读取元素

${array_name[index]}

printf函数

它与c语言的printf相似,不过也有不同:

1、printf不用加括号

shell中的条件语句

if语句

  • if [表达式] then 语句 fi
  • if [表达式] then 语句 else 语句 fi
  • if [表达式] then 语句 elif [表达式] then 语句 elif [表达式] then 语句 ...... fi
a=10
b=20
if [ $a == $b ]
then
echo "a is equal to b"
else
echo "a is not equal to b"
fi

shell的循环语句

for 循环

for 变量 in 列表
do
command1
command2
done
for loop in 1 2 3 4 5
do
ehco "the value is: $loop"
done

while循环

while command
do
comment
done

until循环

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

格式类似于while

shell函数

shell函数必须先定义后使用,定义如下,

function function_name(){
list of commands
[return value]
}
  • 调用函数只需要给出函数名,不需要加括号。
  • 函数返回值,如果不加会将最后一条命令运行结果作为返回值。
  • shell函数返回值只能是整数,0表示成功。
  • 删除函数:unset .f function_name

shell的文件包含

shell可以包含外部脚本,将外部脚本的内容合并到当前脚本。

使用

. filename
或
source filename
posted @ 2021-03-05 21:14  Gumi-21  阅读(21)  评论(0)    收藏  举报