- OS=$(uname -s) # Darwin
- ARCH=$(uname -m) # x86_64
- if是检测commad执行的返回情况,正常(exit code为0)则True
if command; #等价于 command;if [$? -eq 0]
then
....
else
....
if
- $? 上一条命令的返回
- $_ 前一条命令的最后一个参数 或者 如果没有参数,就是上一条命令 mkdir my-new-project && cd $_
- $@ 是传给脚本的所有参数的列表
- $# 参数个数
- $$ pid
- $0 是脚本本身的名字
- $1 是传递给该shell脚本的第一个参数
- ${var:-default} 如果没有var就是用default
- ${parameter/pattern/string} 参数替换
cat /proc/uptime| awk -F. '{run_days=$1 / 86400;run_hour=($1 % 86400)/3600;run_minute=($1 % 3600)/60;run_second=$1 % 60;printf("系统已运行:%d天%d时%d分%d秒",run_days,run_hour,run_minute,run_second)}'
ps ax | grep sth | grep -v grep
- -eq 相等(equal)
- -ne 不等(not equal)
- -gt 大于(greater than)
- -lt 小于(less than)
- -ge 大于等于 (greater than or equal)
- -le 小于等于 (less than or equal)
- [ $str1 = $str2 ] 等于
- [ $str1 != $str2 ] 不等于
- [ -z $str ] 空字符串返回true
- [ -n $str ] 或者 [ $str ] 非空字符串返回true
#!/bin/sh
if [ $max -gt $min ]
then
echo 1
else
echo 0
fi
- -d filename 如果 filename为目录,则为真
- -e filename 如果 filename存在,则为真 例如[[ -d /tmp/mydir ]]
- -f filename 如果 filename为常规文件,则为真
- -L filename 如果 filename为符号链接
- num1 -eq num2 例如[[$1 -eq 3]]
watch -n 3 date
watch -n 3 date &
当在前台运行某个作业时,终端被该作业占据;可以在命令后面加上&
实现后台运行nohup watch -n 3 date &
使用&
命令后,作业被提交到后台运行,当前控制台没有被占用,但是一但把当前控制台关掉(退出帐户时),作业就会停止运行。nohup命令可以在你退出帐户之后继续运行相应的进程。在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中nohup command > myout.file 2>&1
ctrl + z
可以将一个正在前台执行的命令放到后台,并且处于暂停状态。ctrl+c
终止前台命令。jobs
查看当前有多少在后台运行的命令。jobs -l
可以显示出pidbg
将一个在后台暂停的命令,变成在后台继续执行。如果后台中有多个命令,可以用bg %jobnumber将选中的命令调出。fg
将后台中的命令调至前台继续运行