1- tput使用 #!/bin/bash echo Count: tput sc for count in `seq 0 40` do tput rc tput ed echo -n $Count sleep 1 done --- 2- date使用 #!/bin/bash #文件名:time_take.sh start=$(date +%s) sleep 10; end=$(date +%s) difference=$(( end - start )) echo Time taken to execute commands id $difference seconds . --- 3- set -x 和 set +x 对脚本进行部分调试 #!/bin/bash #文件名: debug.sh for i in {1..6}; do set -x echo $i set +x done echo "Script executed" --- 4- 自定义调试: #!/bin/bash function DEBUG() { [ "$_DEBUG" == "on" ] && $@ || : } for i in {1..10} do DEBUG echo "I is $i" done --- 5- Fork炸弹 :() { :|:& };: --- 6- 函数参数 "$@" 被扩展为"$1", $2", "$3"等 "$*" 被扩展为“$1c$2c$3”,其中c是IFS的第一个字符。 $@要比"$*"用的多,$*将所有的参数当作单个字符串,因此很少被使用。 --- 7- shift命令可以将参数依次向左移动一个位置,让脚本能够使用 $1 来访问到每一个参数 for i in `seq 1 $#` do echo $i is $1 shift done --- 8- 通过引用子shell的方式保留空格和换行符 [tiger@instance-zxsoitqe scripts]$ cat test.txt 1 2 3 [tiger@instance-zxsoitqe scripts]$ out=$(cat test.txt) [tiger@instance-zxsoitqe scripts]$ echo $out 1 2 3 [tiger@instance-zxsoitqe scripts]$ out="$(cat test.txt)" [tiger@instance-zxsoitqe scripts]$ echo $out 1 2 3 --- 9-