一、bash判断字符类型二、bash脚本编程语法三、shell的99乘法表
一、bash判断字符类型 //输入一个字符串,判断其类型方法一、printf实现Printf实现方法格式替换符: %b 相对应的参数被视为含有要被处理的转义序列之字符串。 %c ASCII字符。显示相对应参数的第一个字符 %d, %i 十进制整数 //如果目标变量不是整数,printf将会报错 %e, %E, %f 浮点格式 //a=1.2.3 && echo "$E" "$a" 不会报错。建议不要使用 %g %e或%f转换,看哪一个较短,则删除结尾的零 %G %E或%f转换,看哪一个较短,则删除结尾的零 %o 不带正负号的八进制值 %s 字符串 %u 不带正负号的十进制值 %x 不带正负号的十六进制值,使用a至f表示10至15 %X 不带正负号的十六进制值,使用A至F表示10至15 %% 字面意义的% 转义序列转义序列 \a 警告字符,通常为ASCII的BEL字符 \b 后退 \c 抑制(不显示)输出结果中任何结尾的换行字符(只在%b格式指示符控制下的参数字符串中有效),而且,任何留在参数里的字符、任何接下来的参数以及任何留在格式字符串中的字符,都被忽略 \f 换页(formfeed) \n 换行 \r 回车(Carriage return) \t 水平制表符 \v 垂直制表符 \\ 一个字面上的反斜杠字符 \ddd 表示1到3位数八进制值的字符,仅在格式字符串中有效 \0ddd 表示1到3位的八进制值字符 #!/bin/bash function check(){ local a="$1" printf "%d" "$a" &>/dev/null && echo "integer" && return printf "%d" "$(echo $a|sed 's/^[+-]\?0\+//')" &>/dev/null && echo "integer" && return printf "%f" "$a" &>/dev/null && echo "number" && return [ ${#a} -eq 1 ] && echo "char" && return echo "string" } 方法二、awk实现awk '{print($0~/^[-]?([0-9])+[.]?([0-9])+$/)?"num":"str"}' <<< "323" 判断一个var是否是int的方法: expr $var + 0 &>/dev/null //能够实现加法运算则为int echo $args | sed 's/[0-9]//g' //删除数字,看目标值是否为空 echo $args | sed 's/[0-9]//g' | sed 's/-//g' //排除+ / - #echo $a | grep "^[[:digit:]]\+" #if [ $a == 1 ]; then echo ok; fi#if [ $a == 1 ]; then echo ok; else echo "false" ;fi //then带一个语句,else带一个语句。后面都要带; 二、bash脚本编程语法顺序执行选择执行:if,case循环执行:while,until,for for循环: for VAR in LIST ; do 循环体 done for ((;;)) ;do 循环体 done while循环 while CONDITION;do 循环体 条件修正 done while read VAR;do 循环体 done 《《 /path/to/file while: 进入条件:CONDATION测试为真, 提出条件:CONDATION测试为假 until //wile 前加上! 就是while的效果 until CONDITON ;do 循环体 循环控制变量修正表达式 done 进入条件:CONDITION测试为假 退出条件:CONDITION测试为真 注意: a=1;b=2 echo "${a}*${b}=$[$a*$b]" echo "$a*$b=$[$a*$b]" //这两个结果一样,只是,带上{} 主要是为了区分开来 三、shell的99乘法表#!/bin/bashdeclare -i i=1declare -i j=1##############for###############for ((i=1;i<=9;i++));do for ((j=i;j<10;j++));do echo -n -e "$i*$j=$[$i*$j]\t" done echodonefor ((i=1;i<=9;i++)) ;do for ((j=1;j<=i;j++));do echo -n -e "$i*$j=$[$i*$j]\t" done echodone##############while###############i=1j=1while [ $i -lt 10 ] ;do j=1 while [ $j -le $i ] ;do echo -e -n "$i*$j=$[$i*$j]\t" let j++ done let i++ echodonei=1j=9while [ $i -lt 10 ] ;do j=$i while [ $j -le 9 ]; do echo -e -n "$i*$j=$[$i*$j]\t" let j++ done let i++ echodone ##############until###############i=1j=1until [ $i -gt 9 ] ;do j=$i until [ $j -gt 9 ] ;do echo -e -n "$i*$j=$[$i*$j]\t" let j++ done let i++ echodone i=1until [ $i -gt 9 ] ;do j=1 until [ $j -gt $i ];do echo -e -n "$i*$j=$[$i*$j]\t" let j++ done echo let i++done