1. linux | shell脚本-比较判断和运算语句
在撰写shell脚本时,经常会涉及到比较判断与运算表达式。本篇将详细解析这些关键概念。
一、shell比较判断
1. 文件状态判断:使用[ -e 文件路径 ]格式进行判断,如[ -e /root ]判断指定路径是否存在。常见的判断选项包括:
2. 整数值比较:使用[ num1 选项 num2 ]执行比较,例如[ 2 -eq 2 ]或变量比较[ $a -eq $b ]。常用选项包括:
3. 字符串比较:使用[ "string字串1" 选项 "string字串2" ],例如[ $name == "jim" ]。常用选项为:
4. 逻辑判断:多个条件使用逻辑表达式组合。常见的逻辑运算符包括:
二、shell运算语法
1. 运算符:包括加、减、乘、除、取余、自增与自减。
2. 运算命令:
3. 变量的递增、递减:使用+=、-=简化表达式。
4. 实战例子:加减乘除计算器。
三、重定向
1. 重定向输出:使用>>覆盖,>>追加。
2. 重定向输入:使用<<覆盖,<<追加。
3. 重定向错误输出:使用2>覆盖,2>>追加。
4. 重定向输出与错误输出:使用&>覆盖,&>>追加。
5. /dev/null:作为黑洞设备,用于丢弃数据。
四、实战应用
1. &&和||:用于控制脚本的执行流程。
2. 检测主机在线状态:使用脚本进行验证。
下期预告:shell脚本的条件判断与循环语句。
2. 什么是Linux的登录shell与非登录shell
Linux的登录shell与非登录shell的含义及区别:
1、含义:登录shell,指的是当用户登录系统时所取的那个shell,登录shell属于交互式shell。
登录shell将查找4个不同的启动文件来处理其中的命令,用户登录后,在终端上输入命令,shell立即执行用户提交的命令,当用户退出后,shell也终止了。
非交互式:即shell与用户不存在交互,而是以shellscript的方式执行的,shell读取存放在文件中的命令,并且执行它们。当它读到文件的结尾EOF,shell也就终止了。
2、完整度不同:如果启动了一个bash shell而没有登入系统(如在CLI提示符中键入bash),则启动了一个交互式非登录shell。
交互式非登录shell执行/bashrc文件中的命令,在每次执行shell脚本时,都会重新读取这个文件,所以是最完整的。
3、使用情况不同:登录shell的初始化文件(比如.bash_profile)通常会运行这个文件。这样,登录shell和非登录shell都可以使用.bashrc中的命令。
4、登陆方式不同:登录 shell 需要用户名、密码登录后进入的 shell,或者通过--login选项生成的 shell 。
非登录 shell 是指不需要输入用户名和密码即可打开的 shell,比如输入命令bash或者sh就能进入一个全新的非登录 shell,在 Gnome 或 KDE 中打开一个 “terminal” 窗口,也是一个非登录 shell。
5、数值不同:
查看$0的值,登录shell返回-bash,而非登录shell返回的是bash。
需要注意的是:执行exit命令,退出的shell可以是登录或者非登录shell;执行logout命令,则只能退出登录shell,不能退出非登录shell。
(2)linuxshell与或非扩展阅读:
登陆shell通常指的是:
1、用户通过输入用户名/密码(或证书认证)后启动的shell;
2、通过带有-l|--login参数的bash命令启动的shell。
例如,系统启动、远程登录、使用su-切换用户、通过bash--login命令启动bash等。
而其他情况启动的shell基本上就都是“非登陆shell”了。
例如,从图形界面启动终端、使用su切换用户、通过bash命令启动bash等。