一、脚本参数
$0:获取该bash文件的文件名
$n:获取传递给该脚本的第n个参数
$#:获取传递给该脚本的参数个数
$*:以字符串形式展示传递给该脚本的所有参数
$@:以数组形式展示传递给该脚本的所有参数
#!/bin/bash
echo "查看shell脚本中的参数"
echo "目前正在执行的脚本的名字是:$0"
echo "获取到的第一个参数是:$1"
echo "获取到的第二个参数是:$2"
echo "获取到的第三个参数是:$3"
echo "该脚本参数个数:$#"
echo '演示$# 和$@的区别'
echo '------------展示$*-------------'
for i in "$*";do
echo $i
done
echo '------------展示$@-------------'
for i in "$@";do
echo $i
done
二、获取变量的值
$开头的字符串表示变量,可以是自己定义,也可以是系统定义
自己定义变量小写,系统的全部大写
#展示变量的值
num=2
#$num的结果
echo $num
#${num}的结果
echo ${num}
${num}可以指定变量边界
假设有个变量:file=/dir1/dir2/dir3/my.file.txt
代码 | 介绍 | 结果 |
---|---|---|
${file#/} | 删掉第一个/ 及其左边的字符串 | dir1/dir2/dir3/my.file.txt |
${file##*/} | 删掉最后一个/ 及其左边的字符串 | my.file.txt |
${file#*.} | 删掉第一个. 及其左边的字符串 | file.txt |
${file##*.} | 删掉最后一个. 及其左边的字符串 | txt |
${file%/*} | 删掉最后一个 / 及其右边的字符串 | /dir1/dir2/dir3 |
${file%%/*} | 删掉第一个/ 及其右边的字符串 | (空值) |
${file%.*} | 删掉最后一个 . 及其右边的字符串 | /dir1/dir2/dir3/my.file |
${file%%.*} | 删掉第一个 . 及其右边的字符串 | /dir1/dir2/dir3/my |
三、命令替换
$()和``是一样的,用于命令替换,既把一个命令的输出嵌入到另一个命令中
$()可以多次嵌套使用,``不支持多层嵌套,相对来说$()更直观,推荐!
四、算术运算
$[],$(()),(())都可以进行算术运算,在其内部使用变量都不需要添加$
- $(())支持 ++、–、&&、|| 等运算符,$[]不支持这些操作
- (())也支持自增自减操作,除此之外还可以在 if、while 、for中作为条件表达式。
a=5
((a++)) # 等价于 a=$((a + 1))
echo $a # 输出: 6
i=1
while ((i <= 3)); do
echo "$i"
((i++))
done
条件表达式还可以使用[],[[]]。这两个还需要将变量用 $ 引用。