Linux入门&Shell语法

最近开始实习,所在组基于Linux进行开发,这逼迫自己补补Linux的漏洞,发现这个网站特别好用,基本上该有的都有,后续可以做一个参考,这篇记录一下学习过程中的笔记


Shell变量名定义的时候,不需要加美元符号,使用的时候需要;

使用的时候,大括号是为了帮助编译器识别变量的边界;

双引号里面的变量会被翻译,单引号里面的变量不会被翻译;

注释一般使用#,多行注释,使用:<< EOF 注释的内容 EOF

Shell传递函数

$0 表示文件名

$1表示第一个参数,以此内推

$# 传递的参数总个数

∗ 与 * 与 @的区别: 在使用 ∗ 的 时 候 , " ∗ *的时候,"* "*“表示将所有的参数合起来作为一个参数,而”$@"则是返回之前的多个参数

Shell运算符

算数运算符

expr

注意:’\*‘表示乘号

#!/bin/bash
a=10
b=20

if [ $a -eq $b ]
then
    echo "$a = $b"
else
    echo "$a != $b"
fi

出现了这个提示:

-bash: ./testBash.sh: Permission denied

究其原因是:没有增加权限。

chmod 777 ./testBash.sh 

chmod 777 file 改变文件的读写权限

chmod +x file 改变文件的执行权限

关系运算符

布尔运算符

!

-o

-a

逻辑运算符

&&

||

字符串运算符

= 相等

!= 不等

-z 检测字符长度是否为零

-n 检测字符长度是否不为零

$ 检测字符串是否为空

文件测试运算符

-r $file 文件是否可读,可读就返回true

file="./testBash.sh"
if [ -r $file ]
then 
    echo "file can be read"
fi

貌似只能使用文件路径来判断

Shell echo 命令

read name 读取输入,使用的时候,添加美元符号

-e 开启转义,例如echo -e "$name \n" 会换行

-c 不换行

也就是,echo会自动换行,然后开启转义,可以使用\n来换行,使用\c可以关闭echo的自动换行

echo "it is a test" > myfile 将结果写到文件,文件不存在的话,会自动创建,若文件存在,会将之前的结果擦除

> 重定向输出,替换原有内容

>> 重定向的时候是在文件末尾添加内容

echo data 显示命令的执行结果

Shell printf 命令

基本上和c的printf类似,不会自动添加换行

Shell test

用于检查某个条件是否成立,可以进行数值、字符、文件三个方面的测试

待续…