小例子
if语句
a=10
b=20
if [ $a == $b ];
then
echo "a == b "
elif [ $a -lt $b ]
then
echo "a<b"
else
echo 'a 可能 > b'
fi
变量声明
使用两种方式来声明变量
# 1
export a=10
# 2
a=10
上面使用
export a=10
的时候,可以将这个变量暴露给其他的应用来使用,如果要是单独的使用a=10
那么只能在当前的bash进程中使用这个变量,而在子进程中则无法使用.
a=10;
export b=20;
echo "$b";
echo "$a"
上面的操作都是正确的
流程控制
if 语句
a=10;b=20;
if [ $a == $b ];
then
echo "$a eq $b"
else
echo "$a not eq $b"
fi
对于上面执行的重点,首先if语句的判断符号内部,使用[ condition ]
来进行判断,这里要注意写中括号的时候要与判断的内容有空格,并且如果报错,那么bash不会停止运行,只会报错对应的行数.
在bash中0为true 1为false 当判断的条件为0的时候会执行then后的内容如果为1那么就会执行else的代码块
elif
a=10;b=20;
if [ $a == $b ];
then
echo "$a eq $b"
elif [ $a -gt $b ]
echo "$a > $b"
fi
if [ $a==$b ]
这里中间没有空格会导致$a==$b
可能会导致bash解释器认为$a==$b
是一个变量,所以会导致一些问题
条件判断
判断变量和文件夹
[ -v $a ]
判断变量a是否存在
[ -f /aac ]
判断一个文件是否存在
[ -d /aad ]
判断一个文件夹是否存在
判断值
[ $a > $b ]
or[ $a -gt $b ]
判断a是否大于b
[ $a < $b ]
or[ $a -gl $b ]
判断a是否小于b
[ $a -eq $b ]
or[ $a == $b ]
判断a和b的值是否相等
上面并不是bash的专属语法,而是借用自test
的命令的用法,这里的[-d /root] 实际上 是 "test -d /root" 也就是使用了test的命令的快捷方式 可以理解为语法糖,下面解释了test的命令的用法
test命令
![[Pasted image 20231108110917.png]]
~ % [ -d /root1 ]|echo $?
0
~ % [ -d /root1 ];echo $?
1
上面的test命令展示了结果,然后使用echo $?
命令来查看最后一次命令执行的结果
所以if进行判断的其实是一条命令输出的结果
循环控制
while 循环
while <判断条件>
do
<一些内容>
done
# 下面两个while语句都是死循环判断
while :
do
echo "this is test"
done
while true
do
echo "this is test"
done
for 循环
for循环和其他的编程语言类似,都是基于某个范围的循环
for i in 1 2 3 4 5 6
do echo "this is $i"
done
也可以对其他的命令进行组合
for i in $(ls)
do echo "this is $i"
done
提一下,在bash中命令进行判断有两种方式,一种是通过行数,一种是通过换行的分号;
:
冒号
;
分号
case
语法
echo -n "请输入一个数字(1-3):"
read number
case $number in
1)
echo "你输入的数字是 1 "
;;
2)
echo "你输入的数字是 2 "
;;
3)
echo "你输入的数字是 3 "
;;
*)
echo "你输入的不是 1, 2 或 3 "
;;
esac
结尾也是像是if语句一样使用case的逆转的字符esac来进行结尾(不太想评价这种东西
使用bash小例子
判断文件或者文件夹是否存在
export condition_dir="/aa"
export condition_file="/aad"
if [ -v $condition_dir ];
then echo "文件存在"
else echo "文件不存在"
fi
标签:10,判断,基础,echo,命令,使用,test,bash
From: https://www.cnblogs.com/index72/p/17920578.html