linux shell 命令备忘

不是专门的运维,时不时写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'

参考资料


docker,containerd,runc,docker-shim 之间的关系 gnome 3 中设置快捷键,快速启动终端