set -o nounset
set -o errexit
| shell 命令 | 含义 |
|---|---|
| $0 | 当前脚本的文件名 |
| $n | 传递给脚本的参数 |
| $# | 传递给脚本的参数的个数 |
| $* | 传递给脚本的所有参数 |
| $@ | 传递给脚本的所有参数 |
| $? | 上个命令的退出状态,或者函数的返回值 |
| $$ | 当前shell的进程ID |
| -n | 字符串长度是否不为0,若不为0则为True |
| -e | 如果文件存在,则为True |
| -d | 目录是否存在,若存在则为True |
| -h | 是否是软链接,若是,则为True |
| -lt | low than 小于 |
| -ge | greater equals 大于等于 |
| -le | less equals 小于等于 |
| -eq | equals 等于 |
| -ne | low than 不等于 |
| -gt | greater than 大于 |
if判断
#!/bin/bash
if [ -n "$1"]
then
echo "第一个参数$1"
else
echo "第一个参数为空"
fi
while循环
while true
do
wget --spider -q -o /dev/null --tries=1 -T 10 "127.0.0.1:${port}/ping"
if [ $? -eq 0 ]; # 运行成功
then
echo "ping success"
break
else
echo "ping failed, try again"
sleep 3
fi
done
for循环
ports=(15085 15086)
for i in "${!ports[@]}";
do
port=${ports[$i]}
xxxxx
done
cat logs.txt
显示文件,-n表示也显示行号
cat -n logs.txt
cat > logs.txt
cat camly* > filename
path2=$(readlink -f $path)
/dev/null 在Linux中其实是一个空设备文件。它天生就自命不凡,与普通文件划清界限。
其它文件遇到写入的内容照单全收,而 /dev/null 对于写入的东西通通扔掉。