1、变量中字符的长度:${#VARNAME}
eg:A="Starting tserver"
echo $(#A) 查看A有几个字符
ssty -F /dev/conole size 显示标准屏幕的大小(有多少行、列)
ssty -F /dev/conole size | cut -d' ' -f2 显示屏幕的列数
ssty -F /dev/conole size | awk '{print $2}'
A=`ssty -F /dev/conole size`
echo $A
echo ${A#* } 从左往右取找到第一个空格作为分隔符后的内容显示出来
echo ${A##* } 从左往右取找到最后一个空格作为分隔符后的内容显示出来
A=`25 80 100 90`
echo ${A#* } 显示结果为 80 100 90 从左往右取找到第一个空格作为分隔符后的内容显示出来
echo ${A##* } 显示结果为 90 从左往右取找到最后一个空格作为分隔符后的内容显示出来
echo ${A% *} 显示为25 80 100 从右往左去找到第一个空格后的内容去掉
echo ${A%% *} 显示为25 从右往左去找到最后一个空格空格后的内容去掉
2、变量赋值等
${parameter:-word}:如果parameter为空或未定义,则变量展开为“word”;否则,展开为parameter的值;
${parameter:+word}:如果parameter为空或未定义,不做任何操作;否则,则展开为“word”值;
${parameter:=word}:如果parameter为空或未定义,则变量展开为“word”,并将展开后的值赋值给parameter;
${parameter:offset} 取子串,从offset处的后一个字符开始取后面所有的子串
${parameter:offset:length}:取子串,从offset处的后一个字符开始,取lenth长的子串;
eg:A=3 给A赋值
echo ${A:-30} 显示为3
unset A 撤销A的值
echo ${A:-30} 显示为30
echo $A 显示为空
A=${A:-30} 如果A值不空就为A,如果A为空就把30赋值给A
echo $A 显示为30
unset A 撤销A的值
echo ${A:+30} 显示为空
echo ${A:=30} 显示为30 如果A为空的话不仅把字符串展示为A还把字符串赋值给A
echo $A 显示为30
eg:A='hello world'
echo ${A:2:3} 偏移过去2个从第三个字符开始取3个 显示为llo
echo ${A:2} 偏移过去2个去后面所有的字符串 显示为llo world
3、脚本配置文件
/etc/rc.d/init.d/服务脚本
服务脚本支持配置文件:/etc/sysconfig/服务脚本同名的配置文件
eg:vim aa.conf 编辑配置文件
TEST='hello word'
vim aa.sh
#!/bin/bash
#
./root/aa.conf
TEST=${TEST:-info} 若TEST为空则显示为info
[ -n "$TEST" ] && echo $TEST
# chmod +x aa.sh 为aa.sh添加执行权限
# ./aa.sh 测试显示 hello world
4、局部变量
local VAR_NAME=
用local定义变量名
eg:vim b.sh 编辑脚本内容如下:
#!/bin/bash
a=1
test() {
local a=$[3+4] (local指在局部范围内有效)
}
test
for I in `seq $a 10`; do
echo $I
done
# chmod +x b.sh 为b.sh添加执行权限
# ./b.sh 执行结果显示为 1 2 3 4 5 6 7 8 9 10
5、命令mktemp
创建临时文件或目录
mktemp /tmp/file.XX(XX表示生成的随机数值当成文件名)
-d: 创建为目录
eg:FILE=`mktemp /tmp/file.XX`
echo $FILE
eg: mktemp -d /tmp/file.XX
6、信号 (进程间通信的一种方式,一个进程向另外一个进程发送的短小信息,能够实现控制另外一个进程的运作法则或运作机制)
kill -SIGNAL PID
1: HUP
2: INT
9: KILL
15: TERM
每一个信号前都要加上signal
脚本中,能实现信号捕捉,但9和15无法捕捉
Ctrl+c: SIGINT INT 结束当前进程
trap命令:(捕捉信号)
用法:trap 'COMMAND' 信号列表
eg:vim showdate.sh 编辑脚本内容如下:
#!/bin/bash
#
trap 'echo "You go..."INT 此种方式可以脚本中捕捉他人发送的信号,拒绝Ctrl+c
while :; do
date
sleep 2
done
# chmod +x showdate.sh 添加执行权限
# ./showdate.sh 执行脚本内容,显示为You go...
kill %1 即可停止
eg:vim ping.sh 编辑脚本内容如下:
#!/bin/bash
#
NET=192.168.0
FILE=`mktemp /tmp/file.xx`
clearup() {
echo "quit..."
exit 1
rm -f $FILE 清理工作
}
trap 'clearup'INT
for I in {200..254};do
if ping -c 1 -W 1 $NET.$I &> /dev/null;then
echo "$NET.$I is up." | tee >> $FILE
else
echo "$NET.$I is down."
fi
done
# chmod +x ping.sh 添加执行权限
# ./ping.sh 执行脚本命令
7、一行执行多个语句,语句间用分号分隔
实例:
eg:vim ping.sh 编辑脚本ping.sh内容如下:
#!/bin/bash
#
NET=192.168.0
trap 'echo "quit.";exit1'INT 两个命令间用逗号隔开
for I in {200..254};do
if ping -c 1 -W 1 $NET.$I &> /dev/null;then
echo "$NET.$I is up."
else
echo "$NET.$I is down."
fi
done
# chmod +x ping.sh 添加执行权限
# ./ping.sh 执行脚本内容
转载于:https://blog.51cto.com/6644068/1168037