利用/dev/urandom文件创建随机字符
1
| tr -dc '=_+/A-Za-z0-9' </dev/urandom | head -c 100
|
随机数的生成
会生成0-32767之间的整数随机数
会生成三个123-456789之间的整数随机数
urlencode转换
1 2 3 4 5 6 7 8 9 10 11 12 13
| function urlencode() { local length="${#1}" for (( i = 0; i < length; i++ )); do local c="${1:i:1}" case $c in [a-zA-Z0-9.~_-]) printf "$c" ;; *) printf "$c" | xxd -p -c1 | while read x; do printf "%%%s" "$x"; done esac done }
|
数组A对数组B和数组C的差集
1 2 3 4 5 6
| A=(1 2 3 4 5 6 7 8 9) B=(1 2) C=(8 9 10) ABC=($(echo ${B[*]} ${B[*]} ${C[*]} ${C[*]} ${A[*]})) X=($(echo ${ABC[*]} | tr ' ' '\n' | sort | uniq -u | tr '\n' ' ')) echo ${X[*]}
|
注释内容
单行注释
多行注释
- 使用’:’号配合追加输入重定向,冒号在Bash里也是一个命令,表示啥都不做,<<是输入重定向,两个EOF(可用其它特殊成对字符替代)之间的内容通过<<追加给冒号
1 2 3 4 5
| :<<EOF echo "1" echo "2" EOF echo 3
|
1 2 3 4 5 6 7 8 9 10
| cat >/dev/null <<EOF echo "1" echo "2" EOF echo "3" [ 0 -eq 1 ] && { echo "1" echo "2" } echo "3"
|
最大公约数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| #!/bin/bash
a=104 b=40
m=$(echo $a $b | tr ' ' '\n' | sort -n | tail -n1) n=$(echo $a $b | tr ' ' '\n' | sort -n | head -n1)
until [ $n -eq 0 ]; do y=$((m/n)) n=$((m%n)) m=$(((m-n)/y)) done
echo $a=$((a/m))*$m echo $b=$((b/m))*$m echo 最大公约数是$m
|
给小学生出题
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| #!/bin/bash function jianfa() { a=$(shuf -i 1-9 -n1) && b=$(shuf -i 1-9 -n1) m=$(echo $a $b | tr ' ' '\n' | sort -n | tail -n1) n=$(echo $a $b | tr ' ' '\n' | sort -n | head -n1) suansi[i]="$m-$n=" ans[i]=$((m-n)) }
function JIAFA() { m=$(shuf -i 1-9 -n1) n=$(($(($RANDOM%$((10-m))))+1)) suansi[i]="$m+$n=" ans[i]=$((m+n)) }
function main() { read -p "这次想挑战多少题目:" num </dev/tty for ((i=0; i<num; i++)); do pick=$(shuf -i 1-2 -n1) [[ $pick == 1 ]] && jianfa || JIAFA echo ${suansi[i]} read -p "以上题目的答案是:" inputans </dev/tty [[ $inputans == ${ans[i]} ]] && echo 答对了,继续加油哟 || i=$((i-1)) done echo "挑战成功,太棒了!这次已经答对了$i道题目了,休息一下吧!" }
main
|