# 参考教程

https://zhuanlan.zhihu.com/p/418357041

上面的教程中还是有不少缺漏的。

# Linux_SHELL 脚本中的反引号 `

https://blog.csdn.net/zjungle/article/details/105793318

对于输出变量而言,假设变量名为 today, echo $todayecho ${today} 的效果是是一样的。

可以在脚本文件.sh 中写,也可以直接在中断写。

$() 中加命令, ${} 中加变量

字符串不能进行索引操作,但是可以进行切片操作。不过,可以使用切片完成字符串索引操作。

# 查找在终端窗口中定义的所有变量

set | grep today

上面的方法不太行,是当我知道了 today 变量名的时候才可以。

目前没找到这个命令

#

目前没有找到取消一个只读变量的只读属性,但是可以先使用另一个变量来保存这个只读变量的值,然后 unset 掉这个变量

# 设置只读变量的两种方式
# 1
readonly b=2
# 2
b=2
readonly b

删除只读变量 b

% typeset +r b
% unset b

字符串的拼接不能用 + 直接进行连接,但是可以使用双引号,例如 val="$s1$s2"

在使用 expr 命令求变量间的运算时,要在变量和符号直接加空格,如 expr $a + $b

当在命令行中直接写 shell 的时候,如果需要在一行中同时写多条语句,语句之间可以用分号 ; 隔开。最末尾也是可以加分号的。

在 MacBook 中执行 sh 文件的命令: zsh tesh.sh 或者 ./m.sh

当需要同时输出多个变量的值时,不能使用 echo ${a,b} ,使用的是 echo $a, $becho ${"$a, $b"} 也不能用,

报错:zsh: bad substitution

在命令行中直接运行 test 命令是没有输出的,可以结合 if 语句进行判断输出,如下代码

a=2;
if test $a -gt 0; then; echo 1;else;echo 2; fi;
a=10
b=10
# result=$[a+b] # 注意等号两边不能有空格
result=$(expr $a + $b) # 加号左右要加空格
# 上面两个 result 的结果相同
echo "result結果为: $result"

# 使用两个等号判断是否相等

下面使用方括号,但是在方括号中是不能进行数学运算的。
方括号和变量之间要有空格

a=10
b=20
if [ $a == $b ]
then
   echo "a 等于 b"
fi
if [ $a != $b ]
then
   echo "a 不等于 b"
fi

下面是使用两个圆括号:
圆括号和变量之间有无空格都可以

a=10
b=20
if ((a * 2 == b))
then
   echo "等于"
fi
if (($a != $b)) 
then
   echo "a 不等于 b"
fi