a=30
b=60
val=`expr $a + $b`
echo "a + b : $val"
val=`expr $a - $b`
echo "a - b : $val"
val=`expr $a \* $b`
echo "a * b : $val"
val=`expr $b / $a`
echo "b / a : $val"
val=`expr $b % $a`
echo "b % a : $val"
if [ $a == $b ]
then
echo "a 等于 b"
fi
if [ $a != $b ]
then
echo "a 不等于 b"
fi
输出:
两数之和为 : 6
a + b : 90
a - b : -30
a * b : 1800
b / a : 2
b % a : 0
a 不等于 b
if [ $a == $b ]
then
echo "a 等于 b"
elif [ $a -gt $b ]
then
echo "a 大于 b"
elif [ $a -lt $b ]
then
echo "a 小于 b"
else
echo "没有符合的条件"
fi
shell 中流程控制以if开始fi结尾
if else
if else 语句经常与 test 命令结合
num1=$[2*3]
num2=$[1+5]
if test $[num1] -eq $[num2]
then
echo '两个数字相等!'
else
echo '两个数字不相等!'
fi
# for 循环
for loop in 1 2 3 4 5
do
echo "The value is: $loop"
done
输出:
The value is 1
The value is 2
The value is 3
The value is 4
The value is 5
while 语句
int=1
while(( $int<=6 ))
do
echo $int
let "int++"
done
输出:
1
2
3
4
5
6
无限循环
while true
do
command
done
or
for (( ; ; ))
until 循环
until [ ! $a -lt 10 ]
do
echo $a
a=`expr $a + 1`
done
缘起
源码地址 github 求点个 star ⭐️
shell 环境
无论什么开发者,或多或少都会运用到一些
shell
的知识,这篇文章旨在帮助你完整的整理shell
的基本知识话不多说让我们开始吧 !
start
作为一门脚本语言,和其他语言一样
shell
中也存在:变量
This variable is read only.
输出为空
获取字符串长度
echo ${#name}
截取字符串 和 python 类似
echo ${name:3:1}
查找字符串
echo
expr index "\$name" r# 输出1
传递参数
arguments.sh
终端执行
bash arguments.sh 1 2 3
输出:
转义符:
$*
相同,但是使用时加引号,并在引号中返回每个参数。如"\$@"用「"」括起来的情况、以"$1" "$2" … "$n"
的形式输出所有参数。输出:
数组
比较容易理解,一个文本带过
arr.sh
输出:
运算符
两数之和为 : 6
算术运算
输出:
其他的运算符 就不给出实例了详情 源码
shell echo
比较简单
shell printf
语法: printf format-string [arguments...]
输出:
%s %c %d %f
都是格式替代符%-10s
指一个宽度为 10 个字符(-表示左对齐,没有则表示右对齐),任何字符都会被显示在 10 个字符宽的字符内,如果不足则自动以空格填充,超过也会将内容全部显示出来。%-4.2f
指格式化为小数,其中.2 指保留 2 位小数。流程控制
shell 中流程控制以
if
开始fi
结尾输出:
输出:
or
for (( ; ; ))
break continue continue 命令与 break 命令类似,只有一点差别,它不会跳出所有循环,仅仅跳出当前循
case ... esac
函数
函数返回值在调用该函数后通过 \$? 来获得 注意:所有函数在使用前必须定义。这意味着必须将函数放在脚本开始部分,直至 shell 解释器首次发现它时,才可以
函数参数
和前面的传递参数大致相同
输出:
当 n>=10 时,需要使用\${n}来获取参数
shell 文件模块
和 JavaScript ECma5 差不多
test1.sh
test2.sh
输出:
test1文件数据
到这里 shell 的基本知识也差不多了本指南源码
码字不易 求点个 star ⭐️
vim 图