shell 脚本使用记录

  1. 回显关闭显示
stty -echo :关闭回显
stty echo  :开启回显
  1. 字体颜色
#!/bin/bash
#
#下面是字体输出颜色及终端格式控制
#字体色30-37
echo -e "\033[30m黑色字\033[0m"
echo -e "\033[31m红色字\033[0m"
echo -e "\033[32m绿色字\033[0m"
echo -e "\033[33m黄色字\033[0m"
echo -e "\033[34m蓝色字\033[0m"
echo -e "\033[35m紫色字\033[0m"
echo -e "\033[36m天蓝字\033[0m"
echo -e "\033[37m白色字\033[0m"

#字背景颜色范围:40-47
echo -e "\033[40;37m黑底白字\033[0m"
echo -e "\033[41;30m红底黑字\033[0m"
echo -e "\033[42;34m绿底蓝字\033[0m"
echo -e "\033[43;34m黄底蓝字\033[0m"
echo -e "\033[44;30m蓝底黑字\033[0m"
echo -e "\033[45;30m紫底黑字\033[0m"
echo -e "\033[46;30m天蓝底黑字\033[0m"
echo -e "\033[47;34m白底蓝字\033[0m"
#.....

#控制选项说明
#\033[0m关闭所有属性
#\033[1m设置高亮度
#\033[4m下划线
echo -e "\033[4;31m下划线红字\033[0m"
#闪烁
echo -e "\033[5;34m红字在闪烁\033[0m"
#反影
echo -e "\033[8m消隐\033[0m "
#

#\033[30m-\033[37m设置前景色
#\033[40m-\033[47m设置背景色
#\033[nA光标上移n行
#\033[nB光标下移n行
echo -e "\033[4A光标上移4行\033[0m"

#\033[nC光标右移n行
#\033[nD光标左移n行
#\033[y;xH设置光标位置
#\033[2J清屏
#\033[K清除从光标到行尾的内容
echo -e "\033[K清除光标到行尾的内容\033[0m"

#\033[s保存光标位置
#\033[u恢复光标位置
#\033[?25|隐藏光标
#\033[?25h显示光标
echo -e "\033[?25l隐藏光标\033[0m"
echo -e "\033[?25h显示光标\033[0m"

#下面的这个例子是字体不停的闪烁。
#!/bin/bash
#
a=30
b=41
while true
do
echo -e "\033[${a}m光辉女郎\033[0m"
echo -e "\033[${a}m的吗西亚\033[0m"
echo -e "\033[${a}m洛克萨斯\033[0m"
a=$(($(($a%7))+30))
b=$(($(($b%7))+40))
#每次让字体颜色在30-37转换
#每次让背景颜色在40-47转换
echo -e "\033[4A\033[0m"
done
  1. 暂停
sleep 1
  1. map的使用
declare -A map=(
        [name]="张三"
        [age]=13
    )
echo keys = ${!map[@]} # 打印key数组
echo keys = ${map[@]}  # 打印value数组
  1. 续行 换行
apt-get install -y  xxxx \
                    xxxxx \
                    xxxxx

echo -e "\r\n"

如果输出的内容带换行
  1. 文件写入
echo abc > a.txt # 写入文件
echo def >> a.txt # 追加到文件

: > a.txt  # 清空文件  : 这个是占位符
  1. 出错处理
if [ "$?" -ne 0 ]; then exit 8; fi # 如果上一个命令出错,则退出
  1. 获取命令执行的结果
releaseZip=`ls *.zip`
  1. 判断变量是否为空
if [ ! $para1 ]; then
#if [ ! $para1 ]; then  这个也可以
#if [ "$dmin" = "" ]    判断变量是否为空
    echo "IS NULL"
fi
  1. 从终端读取输入
read 变量名 # 不需要定义
echo $变量名  # 输出内容

# 字符串拼接
your_name="qinjx"
greeting="hello, "$your_name" !"
greeting_1="hello, ${your_name} !"

echo $greeting $greeting_1
  1. 字符串
str='this is a string'  # 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的
str="Hello, I know your are \"$your_name\"! \n" # 双引号里可以有变量

string="abcd"
echo ${#string} # 字符串长度
  1. 循环
# 无限循环
while :
do
    command
done

while true
do
    command
done

for (( ; ; ))

你可能感兴趣的:(shell 脚本使用记录)