shell中连接符管道符小括号大括号的使用方法
shell中&&和||的使用方法
&&
command1 && command2 # command1执行成功才会执行command2||
command1 || command2 # command1执行失败才会执行command2有时会遇到要将shell命令写成一条的,可以用;来进行分隔,;不会判断前面的命令是否成成功或失败 例如:
command1 ; command2 ; command3 # 依次执行三条命令&& 和||一起使用
cd /path/ && echo "sucess" || echo "fail" # 如果切换至/path/目录成功,则输出sucess,否则输出fail
cd /path/ || (echo "fail" && mkdir -p /path/) # 如果切换至/path/目录失败,则输出fail,并新建该目录
() 和 {}的区别 ()中的命令结果是单独的,而不是全局的,例如以下例子中在()中定义的变量在()外则无效
[root@test]# a=1;echo $a;( a=2; echo $a );echo $a
1
2
1{}中的命令结果不是单独的,而是全局的,例如以下例子中在{}中定义的变量在{}外同样有效
[root@test]# a=1;echo $a;{ a=2; echo $a; };echo $a
1
2
2sh执行脚本提示 [[: not found
sh执行脚本提示 [[: not found有时在shell脚本中使用if判断语句时使用了[[ 来对判断范围进行限定,使用sh命令来执行时提示
[[: not found
#! /bin/bash
if [[ $(cat /path/file) =~ "str" ]]
then
:
else
echo "Not True"
fi
以上脚本使用sh执行就会报错,如果给脚本添加执行权限使用./file.sh或 bash file.sh。则不会报错。
这就涉及到sh 和 bash的区别
sh 和 bash 是两个不同的 shell。在第一种情况下,您将脚本作为参数传递给 sh 解释器,而在第二种情况下,您决定使用哪个解释器的第一行。
其实Linux中shell的类型有很多,其中常用的几种是
Bourne shell(sh) :是Unix最初使用的shell,并且在每种Unix上都可以使用
Bourne Again shell(bash):是Linux操作系统默认的shell,是sh的扩展。对sh完全向后兼容,并且在sh的基础上增加、增强了很多特性。
最后更新于