shell笔记
数字直接比较
命令 | 含义 |
---|---|
-eq | 等于,如:if [ $a -eq $b ] |
-ne | 不等于,如:if [ $a -ne $b ] |
-gt | 大于,如:if [ $a -gt $b ] |
-ge | 大于等于,如:if [ $a -ge $b ] |
-lt | 小于,如:if [ $a -lt $b ] |
-le | 小于等于,如:if [ $a -le $b ] |
< | 小于(需要双括号),如:(($a < $b)) |
<= | 小于等于(需要双括号),如:(($a <= $b)) |
> | 大于(需要双括号),如:(($a > $b)) |
>= | 大于等于(需要双括号),如:(($a >= $b) |
字符串比较
命令 | 含义 | 示例 |
---|---|---|
-z string | 如果 string 长度为零,则为真 | [ -z “$myvar” ] |
-n string | 如果 string 长度非零,则为真 | [ -n “$myvar” ] |
string1 = string2 | 如果 string1 与 string2 相同,则为真 | [ “$myvar” = “one two three” ] |
string1 != string2 | 如果 string1 与 string2 不同,则为真 | [ “$myvar” != “one two three” ] |
文件比较
命令 | 含义 | 示例 |
---|---|---|
-e filename | 如果 filename 存在,则为真 | [ -e /var/log/syslog ] |
-d filename | 如果 filename 为目录,则为真 | [ -d /tmp/mydir ] |
-f filename | 如果 filename 为常规文件,则为真 | [ -f /usr/bin/grep ] |
-L filename | 如果 filename 为符号链接,则为真 | [ -L /usr/bin/grep ] |
-r filename | 如果 filename 可读,则为真 | [ -r /var/log/syslog ] |
-w filename | 如果 filename 可写,则为真 | [ -w /var/mytmp.txt ] |
-x filename | 如果 filename 可执行,则为真 | [ -L /usr/bin/grep ] |
filename1 -nt filename2 | 如果 filename1 比 filename2 新,则为真 | [ /tmp/install/etc/services -nt /etc/services ] |
filename1 -ot filename2 | 如果 filename1 比 filename2 旧,则为真 | [ /boot/bzImage -ot arch/i386/boot/bzImage ] |
ps相关命令
查看pid进程号
ps -ef | grep elasticsearch | grep -v grep | grep -v kill | awk '{print $2}'
查看存活的节点数(一般情况为1)
ps -ef | grep elasticsearch | grep -v "grep" | wc -l
查看节点是否存活
ps | grep elasticsearch | grep -v 'grep'
颜色相关命令
Green="\033[32m"
Red="\033[31m"
Yellow="\033[33m"
RedBG="\033[41;37m"
Font="\033[0m"
OK="${Green}[OK]${Font}"
Error="${Red}[错误]${Font}"
示例:
echo -e "${OK} ${RedBG} 开始启动elasticsearch ${Font}"
shell方法体
示例:
#!/bin/bash
Green="\033[32m"
Red="\033[31m"
Yellow="\033[33m"
RedBG="\033[41;37m"
Font="\033[0m"
OK="${Green}[OK]${Font}"
Error="${Red}[错误]${Font}"
ps_out=ps | grep elasticsearch | grep -v 'grep'
ps_jar=ps | grep displacement-0.0.1-SNAPSHOT.jar | grep -v 'grep'
is_elasticsearch() {
echo -e "${Error} \n $(tail -n 100 /home/shizeying/IdeaProjects/bigdata-dockerfile/resources/dis/start.sh) ${Font}"
elasticsearch=$(ps -ef | grep elasticsearch | grep -v "grep" | wc -l)
if [ "${elasticsearch}" -eq 1 ]; then
echo -e "${OK} ${RedBG} 开始启动elasticsearch ${Font}"
# nohup /usr/local/bin/docker-entrypoint.sh eswrapper >>/app/elasticsearch.log 2>&1 &
# else
echo -e "${Error} ${RedBG} 启动elasticsearch失败 ${Font}"
echo -e "${Error} $(tail -f 100 /home/shizeying/IdeaProjects/bigdata-dockerfile/resources/dis/start.sh) ${Font}"
fi
}
is(){
if [ ! -n "$ps_out" -a ! -n "$ps_jar" ]; then
echo "开始elasticsearch"
# shellcheck disable=SC2031
echo "开始jar"
sleep 70s && nohup java -jar /app/displacement-0.0.1-SNAPSHOT.jar >>/app/displacement-0.0.1-SNAPSHOT.log 2>&1 &
fi
if [[ $1 == "-d" ]]; then
while true; do sleep 1000; done
fi
}
main(){
is_elasticsearch
}
main
判读当前用户是否为root用户
is_root() {
# shellcheck disable=SC2046
if [ $(id -u) == 0 ]; then
echo -e "${OK} ${Red} 当前用户是root用户,进入启动流程 ${Font}"
else
echo -e "${Error} ${RedBG} 当前用户不是root用户,请重新配置dockerfile ${Font}"
exit 1
fi
}
来源:CSDN
作者:一个奋斗的小白
链接:https://blog.csdn.net/weixin_40334693/article/details/103662431