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

浙公网安备 33010602011771号