bash基础使用

发布时间 2023-12-22 09:30:45作者: index72

小例子

参考

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