linux shell 命令备忘
2020-10-10 tech linux command 6 mins 2222 字
不是专门的运维,时不时写shell脚本还要翻谷歌的感觉实在不太好。这篇文章记录几个常用的 shell 脚本命令,免得每次都从0开始查起。 这篇文章长期更新。
操作符
int型对比
if [ "$a" -eq "$b" ]
if [ "$a" -ne "$b" ]
if [ "$a" -gt "$b" ]
if [ "$a" -ge "$b" ]
if [ "$a" -lt "$b" ]
if [ "$a" -le "$b" ]
(("$a" < "$b"))
(("$a" <= "$b"))
(("$a" > "$b"))
(("$a" >= "$b"))
字符串对比
if [ "$a" = "$b" ]
if [ "$a" == "$b" ]
[[ $a == z* ]] # True if $a starts with an "z" (pattern matching).
[[ $a == "z*" ]] # True if $a is equal to z* (literal matching).
[ $a == z* ] # File globbing and word splitting take place.
[ "$a" == "z*" ] # True if $a is equal to z* (literal matching).
if [ "$a" != "$b" ]
if [[ "$a" < "$b" ]]
if [[ "$a" > "$b" ]]
if [ "$a" \< "$b" ] # 比较的是ASCII码
if [ "$a" \> "$b" ] # 比较的是ASCII码
if [ -z "$String" ] # string is null, that is, has zero length
if [ -n "$String" ] # string is not null
数组
SVC_LIST='app1:svc1(1|esvc2(1|svc3(1,app2:svc1(1|esvc2(1|svc3(1'
IFS=","
for LocalIpInfo in ${SVC_LIST[@]}
do
IFS=":"
local LocalArrayIPInfo=($LocalIpInfo)
local LocalIP=${LocalArrayIPInfo[0]}
local LocalIPFromSsh=`cat .ssh/config | grep -A 1 $LocalIP | grep HostName | cut -d " " -f 6`
local LocalAppList=${LocalArrayIPInfo[1]}
IFS="|"
for LocalAppInfo in ${LocalAppList[@]}
do
IFS="("
local LocalArrayAppInfo=($LocalAppInfo)
local LocalApp=${LocalArrayAppInfo[0]}
local LocalAppDesire=${LocalArrayAppInfo[1]}
local LocalGrepInfo=($LocalApp)
done
done
IFS=" "
for循环
nsArray2=(
abc
def
)
for ns in ${nsArray2[@]}
do
cat <<EOF | kubectl apply -n $ns -f -
apiVersion: v1
kind: ResourceQuota
metadata:
name: default-resourcequota
spec:
hard:
limits.cpu: "10m"
requests.cpu: "10m"
limits.memory: 10Mi
requests.memory: 10Mi
persistentvolumeclaims: "20"
pods: "100"
requests.storage: 1Mi
services: "100"
EOF
done
kubectl get deployment -A|awk '{print $1,$2}'|grep -v NAMESPACE|while read vns vpod;
do
vres=`kubectl get deployment -n $vns $vpod -oyaml|grep hostPath|wc -l`;
if [ $vres -gt 0 ];then
echo "hostpath,www,deployment,$vns,$vpod">>/tmp/www.csv
fi;
done
docker inspect $(docker ps -q) --format '{{ .Name }} -> {{ .GraphDriver.Data.MergedDir}} ' |sed 's|/merged||g'