https://www.runoob.com/linux/linux-shell.html

常用语法

echo $name
echo "$"

if

if [ "$1" = 'y' -a $2 -gt 0 ]; then
    echo "yes"
fi

if [[ -z "$string" ]]; then
    echo "String is empty"
elif [[ -n "$string" ]]; then
    echo "String is not empty"
else
    echo "This never happens"
fi

while

i=1
while [[ $i -lt 4 ]]; do
    echo "Number: $i"
    ((i++))
done

for

for i in /etc/rc.*; do
    echo $i
done

for ((i = 0 ; i < 100 ; i++)); do
    echo $i
done
for i in {1..5}; do
    echo "Welcome $i"
done

常用表达式

#数值比较
[[ NUM -eq NUM ]]     Equal    等于
[[ NUM -ne NUM ]]     Not equal 不等于
[[ NUM -lt NUM ]]     Less than  <
[[ NUM -le NUM ]]     Less than or equal  <=
[[ NUM -gt NUM ]]     Greater than  >
[[ NUM -ge NUM ]]     Greater than or equal >=
(( NUM < NUM ))     Less than 
(( NUM <= NUM ))     Less than or equal
(( NUM > NUM ))     Greater than
(( NUM >= NUM ))     Greater than or equa
#字符串比较
[[ -z STR ]]     Empty string  空
[[ -n STR ]]     Not empty string  非空
[[ STR == STR ]]     Equal
[[ STR = STR ]]     Equal (Same above)
[[ STR < STR ]]     Less than (ASCII)
[[ STR > STR ]]     Greater than (ASCII)
[[ STR != STR ]]     Not Equal
[[ STR =~ STR ]]     Regexp
#文件判断
[[ -e FILE ]]     Exists
[[ -d FILE ]]     Directory
[[ -f FILE ]]     File
[[ -h FILE ]]     Symlink
[[ -s FILE ]]     Size is > 0 bytes
[[ -r FILE ]]     Readable
[[ -w FILE ]]     Writable
[[ -x FILE ]]     Executable
[[ f1 -nt f2 ]]     f1 newer than f2
[[ f1 -ot f2 ]]     f2 older than f1
[[ f1 -ef f2 ]]     Same files

字符串运算

#包含
A="helloworld" 
B="low" 
if[[ $A =~ $B ]] 
then 
  echo"包含" 
else 
  echo"不包含"
fi
#利用通配符
if[[ $A == *$B* ]] 
then 
  echo"包含" 
else 
  echo"不包含" 
fi

case in 语句

https://blog.csdn.net/weixin_38787592/article/details/124623468

#语法
case $CPU in
"8")
    echo "888"
;;
"8" | "9")
    echo "或"
;;
[0-9])
    echo "表达式"
;;
[0-9] | [A-Z])
    echo "表达式 + 或者"
;;
*)
    echo "other"
;;
esac

#字符串包含搜索
A="1 2 3 4 5"  # 源字符串 
B="1 2"  # 搜索字符串 
case $A in 
*"$B"*)
    echo "in str"
;;
*)
    echo "not in"
;;
esac

数组

https://blog.csdn.net/weixin_59792733/article/details/126637758

  • 数组定义
#方法1
数组名=(value0 value1 value2 ...)
#方法2
数组名=([0]=value1 [1]=value2 [2]=value3 ...)
#方法3
列表名="value1 value2 value3 value4 value5 ..."
数组名=($列表名)

#方法4
数组名[0]=value1
数组名[1]=value2
数组名[2]=value3
数组名[3]=value4

数组使用

echo ${数组名[x]} 
#显示全部数组
echo ${数组名[@]}  或者  echo ${数组名[*]}
#使用for遍历输出数组的每个元素值
for i in ${array[@]};
  do echo $i;
done

检测docker和docker网络

if [[ -n $(docker ps -q -f "name=^myMySQL$") ]];then
    echo "has install mysql"
else
    echo "not install mysql"
fi
#检测网络字符串不为空
if [[ -n $(docker network ls -q -f "name=lnet0") ]];then
    echo "has install mysql"
else
    echo "not install mysql"
fi

#不存的网络创建
if [[ -z $(docker network ls -q -f "name=lnet0") ]];then
    echo "docker network create lnet0" 
    docker network create lnet0
fi

数学计算

(( ))    用于整数运算,效率很高,推荐使用。
let    用于整数运算,和 (()) 类似。
[$]    用于整数运算,不如 (()) 灵活。
expr    可用于整数运算,也可以处理字符串。比较麻烦,需要注意各种细节,不推荐使用。
bc       #Linux下的一个计算器程序,可以处理整数和小数。Shell 本身只支持整数运算,想计算小数就得使用 bc 这个外部的计算器。
declare -i    将变量定义为整数,然后再进行数学运算时就不会被当做字符串了。功能有限,仅支持最基本的数学运算(加减乘除和取余),不支持逻辑运算、自增自减等,所以在实际开发中很少使用。
------------------------------------------------------------------------
((a=10+66)   ((b=a-15))   ((c=a+b))
c=$((a+b))  获取表达式结果
((a>7 && b==c))     逻辑判断
echo $((a+10)) 输出结果
((a=3+5, b=a+10)) 对多个表达式同时进行计算
* 在 (( )) 中使用变量无需加上$前缀,(( )) 会自动解析变量名,这使得代码更加简洁
-----------------------
let命令:对整数进行数学运算
let 表达式 或  let "表达式" 或  let '表达式'
它们都等价于((表达式))

变量赋值

str="Hello World"
echo $str

通过命令的结果进行赋值
current_date=$(date +%Y-%m-%d)
echo $current_date    # 输出当前日期

从文件中获取内容并赋值到变量:
file_content=$(cat file.txt)
echo "$file_content"     # 输出文件file.txt的内容


计算表达式后赋值给变量:
sum=$((5+7))
echo $sum      # 输出 12

退出

exit


```####






```