
shell
zxy131072
嵌入式linux
展开
-
shell实现的俄罗斯方块游戏
该脚本测试可以运行起来,但是实际使用发现功能不太正常。主要可以学习一下里面的一些语法。#!/bin/bash# Tetris Game# 10.21.2003 xhchen<[email]xhchen@winbond.com.tw[/email]>#APP declarationAPP_NAME="${0##*[\\/]}" #print exec nameAPP_VERSION="1.0"#颜色定义cRed=1cGreen=2 cYellow=3 cBlue=4原创 2020-11-04 15:59:56 · 187 阅读 · 0 评论 -
awk基础
文本处理工具 awk命令格式awk [options] -f awk-script-line filename options: -F:定义输入字段分隔符,默认的分隔符是空格或者制表符(tab) command: BEGIN{} {} END{} 行处理前 行处理 行处理后awk 'BEGIN{print 1+1} {print "demo"} END{print "end....."}' passwd原创 2020-10-15 16:32:00 · 225 阅读 · 0 评论 -
chattr 设置重要的文件不可以删除
sudo chattr +i a.c rm a.c # fail sudo rm -rf a.c # fail sudo chattr -i a.c rm a.c # ok原创 2020-10-15 11:15:53 · 330 阅读 · 0 评论 -
Linux中C验证线程的几种退出方式
/* 验证线程的几种退出方式 */#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <sys/types.h>#include <sys/stat.h>#include <string.h>#include <pthread.h>void* myfunc(void* arg){ printf("child pthre原创 2020-10-12 10:47:56 · 784 阅读 · 0 评论 -
shell中shift使用
#!/bin/shwhile [ $# -ne 0 ]do let num+=$1 shift 2doneecho "num : ${num}"测试结果原创 2020-10-12 10:09:23 · 251 阅读 · 0 评论 -
shell函数中数组传递参数
#!/bin/sharray=(1 2 3 4 5)echo "${array[@]}"func_demo(){ value=0# for i in "$@" for i in $* do let value+=$i done echo $value}func_demo ${array[@]} #数组所有元素的值echo "1111111111111"func_demo ${array[*]}测试结果...原创 2020-10-12 09:51:20 · 900 阅读 · 0 评论 -
shell实现并发检查某个网段IP
#!/bin/sh> ip.txtfor i in {1..255}do { ip=192.168.8.$i ping -c4 -W1 $ip >&/dev/null if [ $? -eq 0 ];then echo "$ip" | tee -a ip.txt fi }&donewaitecho "ok"原创 2020-10-09 14:34:55 · 210 阅读 · 0 评论 -
shell命令行传递参数
shell命令行传递参数及其校验#!/bin/shif [ $# -eq 0 ];then echo "usage: `basename $0` filename" exit 1fiif [ ! -d $1 ];then echo "error file type" exit 2fifor dir in `ls $1`do echo "$dir"doneshell重新定义分隔符#希望for处理文件按照回车分隔,而不是空格或者tab#重新定义分隔符#IFS内部字段分隔符原创 2020-10-09 14:33:23 · 1156 阅读 · 0 评论 -
shell实现变量的替换
string/old/newunset urlurl=www.github.com.cnecho ${url/github/sina}变量的替代${变量名-新的变量值}如果变量没有被赋值,会使用新的变量值替换;如果变量有被赋值,包括空值,不会被替代。${变量名:-新的变量值}如果变量没有被赋值,包括空值,会使用新的变量值替换;如果变量有被赋值,不会被替代。...原创 2020-09-30 13:17:06 · 595 阅读 · 0 评论 -
shell的索引及切片
var:start:end原创 2020-09-30 13:02:20 · 787 阅读 · 0 评论 -
shell中变量内容的删除
# 从前向后匹配## 从前向后匹配,贪婪匹配% 从后向前匹配%% 从后向前匹配,贪婪匹配原创 2020-09-30 12:15:48 · 508 阅读 · 0 评论 -
shell中的算术运算使用
exprexpr 1 + 3num1=10num2=20expr $num1 + $num2C语言方式echo $((3 + 4))方括号[ ]echo $[5 + 3]let命令let sum=1+1echo $sum原创 2020-09-30 09:23:55 · 174 阅读 · 0 评论 -
shell中的特殊符号使用() ``
显示当前系统/的剩余空间df -h | grep '/$' | awk '{ printf $4 }'()等价于 ``原创 2020-09-28 09:29:34 · 2449 阅读 · 0 评论 -
shell脚本实现IP地址转换成整型数值
createip.sh#!/bin/bash i=0while [ $i -lt 20 ]do echo "192.168.0.$i">>ip.txt i=`expr $i + 1`done生成ip.txt文件192.168.0.0192.168.0.1192.168.0.2192.168.0.3192.168.0.4192.168.0.5192.168.0.6192.168.0.7192.168.0.8192.168.0.9192.168.0.1019原创 2020-09-12 07:21:23 · 2060 阅读 · 0 评论 -
shell脚本实现创建用户名字
#!/bin/bashfunction grep_user(){ R=`grep "^$1:" /etc/passwd | wc -l` echo $R}echo -n "input username:"read USERNAMERET=`grep_user $USERNAME`echo "......return $RET ......."if [ $RET -eq 1 ]then echo "$USERNAME exist"else echo "$USERNAME原创 2020-09-12 07:21:08 · 464 阅读 · 0 评论 -
shell中until使用
#!/bin/bash I=5until [ $I -le 0 ]do echo $I I=`expr $I - 1`done测试结果原创 2020-09-12 07:20:50 · 411 阅读 · 0 评论 -
shell中while循环使用
#!/bin/bash I=0while [ $I -lt 10 ]; do printf "\e[1;3%dm%3d\e[0m" `expr $I % 8` $I I=`expr $I + 1`doneecho ""echo "------------------------------------"I=0while ((I < 10)); do printf "\e[1;3%dm%3d\e[0m" $(($I % 8)) $I ((I++))doneecho ""原创 2020-09-12 07:20:34 · 1507 阅读 · 0 评论 -
shell中if使用
#!/bin/bashVar=3if [ $Var -eq 5 ]then echo "var = 5"elif [ $Var -eq 3 ]then echo "Var = 3"elif [ $Var -eq 2 ]then echo "var = 2"else echo "error"fiif [ $Var -gt 0 ]then if [ $Var -eq 1 ] then echo "true" fifi测试结果原创 2020-09-12 07:19:59 · 156 阅读 · 0 评论 -
shell中的for循环使用
#!/bin/bash #for (( i = 0; i < 10; i ++ ))for value in `seq 10`do echo "----------------" echo $valuedone测试结果原创 2020-09-12 07:19:41 · 143 阅读 · 0 评论 -
shell判断当前目录下目录文件的个数
#!/bin/bashFile=`ls`i=0for Var in $Filedo if [ -d $Var ] then echo "$Var is a directory" i=`expr $i + 1` fidoneecho "total directory is $i"测试结果原创 2020-09-12 07:19:22 · 1225 阅读 · 0 评论 -
shell实现判断文件类型
#!/bin/bash FILENAME=$1BOLD=`tput bold`SMSO=`tput smso`SGR0=`tput sgr0`if [ $# -ne 1 ]then echo "error number of arguments" exit 1fiif ! [ -e $FILENAME ]then echo "$FILENAME is not exists" exitfiif [ -L $FILENAME ]then FILETYPE=link原创 2020-09-12 07:19:03 · 1157 阅读 · 0 评论 -
shell通过传参实现四则运算
#!/bin/bash read X OPT Yif [ "$OPT" == "*" ]then echo `expr $X \* $Y`else echo `expr $X $OPT $Y`fi测试结果原创 2020-09-12 07:18:34 · 314 阅读 · 0 评论 -
shell中使用case分支语句
#!/bin/bash echo "input your score:"read scoreif [ $score -lt 0 ] || [ $score -gt 100 ] then echo "out of range !" exitfiint=`expr $score / 10`case $int in 10) echo "A" ;; 9) echo "A" ;; 8) echo "B" ;; 7) echo "C" ;; 6)原创 2020-09-12 07:20:17 · 343 阅读 · 0 评论 -
shell中break试下跳出n级循环
#!/bin/bash for value0 in 1 2 3 4 5 6 7do for value1 in 1 2 3 4 5 6 7 do for value2 in 1 2 3 4 5 6 7 do if [ $value2 -gt 3 ] then break 2 fi echo $value0 -$value1- $value2 done echo "-------------------------------" done原创 2020-09-11 09:35:23 · 367 阅读 · 0 评论 -
shell中字符串数组的使用
#!/bin/bash array=("num1" "num2" "num3")for ((i = 0; i < 3; i ++))do echo ${array[$i]}doneecho -e "*********************"echo ${array[*]}测试结果原创 2020-09-11 09:30:13 · 2192 阅读 · 0 评论 -
shell中的local修饰符
#!/bin/bash #local一般用于局部变量声明,多在在函数内部使用。function fun(){ local var=100 echo $var}fun# 去掉local修饰即可打印出来echo $var 测试结果加上local修饰去掉local修饰原创 2020-09-11 09:16:04 · 1983 阅读 · 1 评论 -
shell中函数基本使用
#!/bin/bash function func(){ echo "xxxxxx" echo $1 return 1}#反撇号`` :反撇号和$()一样,引号或括号里的命令会优先执行,如果存在嵌套,反撇号不能用VAR=`func aaa`echo "VAR:$VAR"echo $?测试结果原创 2020-09-11 09:10:51 · 236 阅读 · 0 评论 -
shell脚本中的特殊符号的测试
#!/bin/bash VAR="hello world"echo $VAR# $0: 类似于C中的argv[0] ---- 描述可执行程序名echo -n "elf file name: "echo $0# $1-$N: 类似于C中的argv[1]--argv[N] 命令行参数echo -n "parameter: "echo $1# $#: 计算命令行参数的个数(不包含 argv[0])echo -n "argc num: "echo $## $*/$@: 表示原创 2020-09-11 09:03:53 · 164 阅读 · 0 评论 -
shell脚本实现检查某个目录下的文件是否存在
#!/bin/bash check_file_name(){ val=`ls ./*.sh | grep $1 | wc -w` if [ $val -eq 0 ] then echo "do not have $1" else echo "have $1" fi}echo -n "Input file name >>>"read FILEcheck_file_name $FILE 测试结果原创 2020-09-11 09:03:40 · 3473 阅读 · 0 评论 -
Shell处理文件
待处理的文件(忽略第一行)日期 开盘 收盘 涨跌 涨跌幅20080102 5,265.00 5,272.81 11.25 0.210%20080103 5,269.80 5,319.86 47.05 0.892%20080104 5,328.41 5,361.57 41.71 0.784%20080107 5,357.45 5,393.34 31.77 0.5原创 2020-08-20 08:42:38 · 139 阅读 · 0 评论 -
shell脚本模拟手动插拔断网联网测试
#!/bin/shecho datei=1 while [ 1 ] ; do echo "count is $i" echo "now down network..." ifconfig eth0 down sleep 5 echo "now up network..." ifconfig eth0 up sleep 10 i=$((i+1))doneecho "end..."原创 2020-08-13 22:58:03 · 682 阅读 · 0 评论 -
025_shell基础2
1、shell变量—数值类var=10test $var -gt 100echo $?test $var -gt 1echo $?2、shell变量—字符串类var='hello'[ -d nfs -a $var = 'hello' ]echo $?[ -d test.c -a $var = 'hello' ]echo $?unset var[ -d nfs -a $var = 'hello' ]echo $?[ -d test.c -a $var = 'hello'.原创 2020-05-11 17:37:30 · 164 阅读 · 0 评论 -
024_对于一个用户日志文件,每行记录了一个用户查询串,长度为1-255字节,共几千万行,请排出查询最多的前100条
对于一个用户日志文件,每行记录了一个用户查询串,长度为1-255字节,共几千万行,请排出查询最多的前100条#! /bin/bash# show top 10file=$1awk '{print $1}' test.txt | sort | uniq -c | sort -k1nr | head -n10原创 2020-05-11 17:35:02 · 206 阅读 · 0 评论 -
023_在每月第一天备份并压缩etc目录的所有内容,存放在rootbak目录里
在每月第一天备份并压缩/etc目录的所有内容,存放在/root/bak目录里,且文件名,为如下形式yymmdd_etc,yy为年,mm为月,dd为日。Shell程序fileback存放在/usr/bin目录下#!/bin/bash#需要有root权限filename=`date +%y%m%d`_etc.tar.gz#cd /etc/tar -zcvf $filename *mv $filename /root/bak/# vim /etc/crontab 加入# * * 1 * *原创 2020-05-11 17:34:07 · 4243 阅读 · 0 评论 -
022_用户清理,清除本机除了当前登陆用户以外的所有用户
用户清理,清除本机除了当前登陆用户以外的所有用户#!/bin/basha=`echo $0 | sed 's/..\(...\).*/\1/'`for i in `w|awk -v b=$a 'NR>2{if($NF !~ b) print $2}'`do echo $i fuser -k /dev/$i done原创 2020-05-11 17:33:06 · 234 阅读 · 0 评论 -
021_自动删除30个账号的功能
自动删除30个账号的功能。账号名为std01至std30#!/bin/bash#编写shell程序,实现自动删除30个账号的功能。账号名为std01至stud30#要有root权限for i in {9901..9930}; do xx=`echo $i | sed 's/99//g'` userdel -r std$xxdone...原创 2020-05-11 17:32:16 · 1731 阅读 · 0 评论 -
020_shell添加用户组
添加一个新组为class1,然后添加属于这个组的30个用户,用户名的形式为stdxx,其中xx从01到30,并设置密码为对应的stdxx#!/bin/bash#设计一个shell程序,添加一个新组为class1,然后添加属于这个组的30个用户,用户名的形式为stdxx,其中xx从01到30。#请 su root 或者 sudo su 变成root用户groupadd class1for i in {9901..9930}; do xx=`echo $i | sed 's/99//g'原创 2020-05-11 17:31:13 · 5894 阅读 · 0 评论 -
019_设置文件所有者的权限
设计一个Shell程序,在/tmp/目录下建立50个目录,即user1~user50,并设置每个目录的权限,其中其他用户的权限为:读;文件所有者的权限为:读、写、执行;文件所有者所在组的权限为:读、执行。#!/bin/bashcd /tmp if [ $? -eq 0 ]; then i=1 while [ $i -le 50 ]; do mkdir -p /tmp/user$i chmod 754 /tmp/user$i let i++ doneelse echo "bye原创 2020-05-11 17:30:13 · 495 阅读 · 0 评论 -
018_统计IP访问:要求分析apache访问日志,找出访问页面数量在前100位的IP数
统计IP访问:要求分析apache访问日志,找出访问页面数量在前100位的IP数。日志大小在78M左右。#! /bin/bash# $1 为要测试的日志文件awk '{print $1}' $1 | sort | uniq -c | sort -k1nr | head -n100原创 2020-05-11 17:29:16 · 321 阅读 · 0 评论 -
017_终端输入一个文件名,判断是否是设备文件
终端输入一个文件名,判断是否是设备文件#/bin/bashecho -e "The program will Judge a file is or not a device file.\n\n"read -p "Input a filename:" filenameif [ -b $filename -o -c $filename ]; then echo "$filename is a device file" exit 0else echo "$filename is原创 2020-05-11 17:28:14 · 442 阅读 · 0 评论