反轉字符串
#!/bin/sh
#test.sh
STR=$1
LEN=${#STR}
for((i=LEN;i>=0;i--))
do
trap 'echo "第$LINENO行操作之前i=$i"' DEBUG
trap '錯誤 $LINENO:' ERR
trap 'echo "結尾:"' EXIT
echo -n ${STR:i:1}
done
echo -e "\n"
運行
./test.sh 123456 > test.txt
123456是傳入的參數,將運行結果輸出到test.txt文件。
修改后:
fun(){
a=$1
len=${#a}
echo "反轉前:$a"
echo "長度是$len"
for((i=$len-1;i>=0;i--))
do
trap 'echo "execute in lineno:$LINENO, the char is ${a:i:1}"' DEBUG
echo "char:${a:i:1}"
done
echo -e "\n"
}
read -p "please input a word you want to reverse:" str
fun $str > test.txt
效果圖
反轉字符的同時字符大小寫互轉,將調試信息保存到log.txt文件中
fun(){
#獲取參數
a=$1
#取字符串長度
len=${#a}
echo "反轉前:$a"
echo "長度是$len"
#遍歷字符串
for((i=$len-1;i>=0;i--))
do
#從后向前依次取得字符
c=${a:i:1}
#清空log.txt
:>log.txt
#打印調試信息
trap 'echo "execute in lineno:$LINENO, the char is $c" >> log.txt' DEBUG
trap 'error occur in lineno:$LINENO >> test.txt' ERR
trap 'echo "end:" >> test.txt' EXIT
#判斷字符類型
case $c in
#為大寫字母時轉為小寫
[[:upper:]])
echo -n $c | tr [A-Z] [a-z];;
#為小寫字母時轉為大寫
[[:lower:]])
echo -n $c | tr [a-z] [A-Z];;
#非字母不需改變
*)
echo -n "$c" ;;
esac
done
echo -e "\n"
}
#從鍵盤獲取參數
read -p "please input a word you want to reverse:" str
#調用函數
fun $str
測試
查看日志文件