bash shell
#!/bin/bash
echo "hello world";
位置参数和变量
参数 | 描述 |
---|---|
$0 | shell脚本名 |
$0–$9 | 命令行参数对应的值 |
$* | 命令行中所有的参数,如果$*被""包括,则参数之间用环境变量IFS中的第一个字符隔开 |
$@ | 命令行的所有参数,如果$@被""包括,所有参数不会结合在一起。(可用于遍历) |
$# | 命令行参数的个数 |
$$ | shell脚本进程id |
$? | 最近一次命令的退出状态 |
$! | 最近一次后台进程的id号 |
shift [N] 把命令行参数向前移动N个位置,可用于命令行参数多余9个的情况下。
set [option] agrnument-list 设置位置参数,可用来在脚本中改变位置参数的值等
$(命令) 命令替换,将命令的输出代替变量。
read [option] variable-list 变量的输入
控制结构
分支
if 表达式
then
todo
fi
if 表达式
then
todo
else
todo
fi
if 表达式
then
todo
elif 表达式
then
todo
else
todo
fi
case 变量 in
正则)
todo ;;
*)
default todo ;;
esca
test 表达式 =》判断表达式的逻辑值
[ 表达式 ] =》test命令的简写方式
字符串比较 | 结果 |
---|---|
str1 != str2 | 不相等为真 |
str1 = str2 | 相等为真 |
-n str | 不为空为真 |
-z str | 为空为真 |
数值比较 | 结果 |
---|---|
e1 -eq e2 | 相等为真 |
e1 -ne e2 | 不等为真 |
e1 -gt e2 | 大于为真 |
e1 -ge e2 | 大于等于为真 |
e1 -lt e2 | 小于为真 |
e1 -le e2 | 小于等于为真 |
文件相关 | 结果 |
---|---|
-d file | 目录为真 |
-e file | 存在为真 |
-f file | 普通文件为真 |
-g file | 文件SGID被置位为真 |
-r file | 可读为真 |
-w file | 可写为真 |
-x file | 可执行为真 |
-s file | 文件长度不为0为真 |
-u file | 文件SUID被置位为真 |
循环
for 变量 [in 变量列表]
do
todo
done
while 表达式
do
todo
done
until 表达式
do
todo
done
break,continue同C程序中的意义。
exit n 程序结束,退出码为n
算术运算
- let命令
- $(())
- expr命令
除了没有C中的++和–以外,其他的基本一致。
**表示指数。
let “x=6” "y=9" "z=11"
let t=x+y
m=$((x-y))
n=`expr $x + $z` 【注意这里是反引号`】
函数
function_name()
{
函数体
}
调用
函数名 参数列表