命令替换的两种格式:Linux 命令
$( Linux 命令)
例子:
echo ps -ef|grep httpd
echo $(ps -ef|grep httpd)
echo "ps -ef|grep httpd“
echo “$(ps -ef|grep httpd)”

生成随机数的特殊变量
echo $RANDOM 范围是: [0, 32767

expr:通用的表达式计算命令
表达式中参数与操作符必须以空格分开,表达式中的运算可以是算术运算,比较运算,字符串运算和逻辑运算。
expr 5 % 3 #5除以三取余数

expr 5 \* 3 # 乘法符号必须被转义
basename dirname 取文件名和路径名
特殊变量总览
| 变量 | 含义 | 示例值 |
|---|---|---|
$0 | 脚本文件名 | ./script.sh |
$1 – $9 | 第1-9个参数 | $1 是第一个参数 |
${n} | 第n个参数(n>=10) | ${10} 是第10个参数 |
$# | 参数个数 | 3 |
$* | 所有参数(作为一个字符串) | "arg1 arg2 arg3" |
$@ | 所有参数(作为独立字符串) | "arg1" "arg2" "arg3" |
$$ | 当前脚本的 PID | 12345 |
$! | 最后一个后台进程的 PID | 12346 |
$? | 上一条命令的退出状态 | 0(成功)或非0(失败) |
$- | 当前 shell 的选项标志 | himBH |
#!/bin/bash
# 测试所有特殊变量
echo "脚本名: \$0 = $0"
echo "参数个数: \$# = $#"
echo "第一个参数: \$1 = $1"
echo "第二个参数: \$2 = $2"
echo "第十个参数: \${10} = ${10}"
echo "所有参数作为字符串: \$* = $*"
echo "所有参数作为独立: \$@ = $@"
echo "当前脚本 PID: \$\$ = $$"
echo "上一条命令状态: \$? = $?"
echo "当前 shell 选项: \$- = $-"
# 测试 $!
sleep 10 &
echo "最后一个后台 PID: \$! = $!"
发表回复