shell
misc
- 调试 sh -x xxxsh
- 前后要有空格
- Str1 =~ str2 包含
echo “`ls -a`” #返回ls的输出 要使用命令替换
#comments
执行
Date
D1=$(date)
- 以上两条都执行了date指令 ,不过后一条把输出返回了
lock=$(./pcieserver -I 130 -d 1)
引用
- 单引号
- 双引号
- 反斜杠\
命令替换
- 反引号
- $()
预定义变量/特殊变量
$#
- 表示位置参数的数量
$*
- 表示所有位置参数的内容
$?
- 执行上一个程序的返回值
- 0表示正确执行
$$
- 表示当前进程的pid
$!
- 执行上一个背景指令的pid
$0
- 这个程序的执行名字
$n 这个程序的第n个变量 n=1…9
变量
a=123
b=jkl
c=$(ls)
使用变量
- echo $a
- let a=a+789
shell没有变量类型之说,只有在比较的时候有字符串和整数之说
比较
整数
-
-eq
-
-ne
-
-ge
- 大于等于
-
-gt
-
-lt
-
-le
字符串
- -z 空串
- -n 非空串
- =
- !=
#如果$a等于a*(字符匹配),那么结果为true
if [ "$A" == "a*" ];then
echo "==/"a*/""
fi
#如果$1等于a*(字符匹配),那么结果为true $1为第一个参数
if [ "$1" == "--clean" ];then
echo "==/"--clean/""
fi
if [ "$1" == "--help" ] || [ "$1" == "-h" ];then
echo "==/"--help/""
fi
0为真 1为假
demo
#!/bin/bash
lock=$(./pcieserver -I 130 -d 1)
status="0x40"
until [[ "$lock" =~ $status ]]
do
lock=$(./pcieserver -I 130 -d 1)
Echo $lock
done
if [[ $lock = ~ $status ]]
then
echo "clock is 0x40 locked"
echo "config ToD load"
todload1=$(./pcieserver -w 0x6004 -v 0x00000000 -d 1)
todload2=$(./pcieserver -w 0x6000 -v 0x00000001 -d 1)
todload3=$(./pcieserver -w 0x6000 -v 0x00000000 -d 1)
echo "config Loopback"
lp=$(./pcieserver -w 0x20008 -v 0xc0000000 -d 1)
r1=$(./pcieserver -w 0x20000 -v 0x1 -d 1)
r0=$(./pcieserver -w 0x20000 -v 0x0 -d 1)
fi
函数
#!/bin/bash
# author:菜鸟教程
# url:www.runoob.com
demoFun(){
echo "这是我的第一个 shell 函数!"
}
echo "-----函数开始执行-----"
demoFun
echo "-----函数执行完毕-----"
#!/bin/bash
# author:菜鸟教程
# url:www.runoob.com
funWithParam(){
echo "第一个参数为 $1 !"
echo "第二个参数为 $2 !"
echo "第十个参数为 $10 !"
echo "第十个参数为 ${10} !"
echo "第十一个参数为 ${11} !"
echo "参数总数有 $# 个!"
echo "作为一个字符串输出所有参数 $* !"
}
funWithParam 1 2 3 4 5 6 7 8 9 34 73
- 在Shell中,调用函数时可以向其传递参数。在函数体内部,通过 $n 的形式来获取参数的值,例如,$1表示第一个参数,$2表示第二个参数…
函数的参数返回
- 参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。 return后跟数值n(0-255
- 也可以使用echo 返回值