shell笔记

这篇博客详细记录了Shell编程中的关键点,包括数字和字符串的比较、文件操作、进程管理命令ps的使用,以及如何设置颜色相关命令。此外,还提供了一个示例,演示了如何判断当前用户是否为root用户。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值