# 参考教程
https://zhuanlan.zhihu.com/p/418357041
上面的教程中还是有不少缺漏的。
# Linux_SHELL 脚本中的反引号 `
https://blog.csdn.net/zjungle/article/details/105793318
对于输出变量而言,假设变量名为 today, echo $today
和 echo ${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, $b
, echo ${"$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 |