#!/bin/bash
test -l $1
echo $?
#功能:判断用户;主目录下是否有file-dir和dir-dir目录
#如果这两个目录存在,询问是否删除这两个目录
#如果用户输入y,则将这两个目录删除,重新创建这两个目录
#如果用户输入n,输出继续
#请用户输入一个路径,将这个路径下的文件拷贝到file-dir
#将这个路径下的文件夹拷贝到dir-dir
#预计拷贝的文件和目录的个数
#来源:朱鸿飞老师
#!/bin/bash
for dir in $HOME/file-dir $HOME/dir-dir
do
if [ -d $dir ]
then
read -p "是否删除:" OP
case $OP in
Y|YES|y/yes)
rm -r $dir
mkdir $dir
;;
N|NO|no|n)
echo "continue"
;;
esac
else
mkdir $dir
fi
done
fileCount=0
dirCount=0
read -p "请输入一个路径:" pathname
flist=`ls $pathname`
# $pathname指代路径
# $list指代路径下的文件
for list in $flist
do
if [ -f $pathname/$list ]
then
cp $pathname/$list $HOME/file-dir
fileCount=`expr $fileCount + 1`
elif [ -d $pathname/$list ]
then
cp -r $pathname/$list $HOME/dir-dir
dirCount=`expr $dirCount + 1`
fi
done
echo "fileCount = $fileCount"
echo "dirCount = $dirCount"
#!/bin/bash
for dir in $HOME/file-dir $HOME/dir-dir
do
if [ -d $dir ]
then
read -p "是否删除?" op
case $op in
y|yes)
rm -r $dir
mkdir $dir
;;
n|no)
echo "continue"
;;
esac
mkdir $dir
fi
filecount=0
dircount=0
read -p "请输入一个路径:" pathname
flist=`ls $pathname`
for list in $flist
do
#filecount=0
#dircount=0
if [ -f $pathname/$list ]
then
cp $pathname/$list $HOME/file-dir
filecount=`expr $filecount + 1`
elif [ -d $pathname/$list ]
then
cp -r $pathname/$list $HOME/dir-dir
dircount=`expr $dircount + 1`
fi
done
done
echo "filecount=$filecount"
echo "dircount=$dircount"
#!/bin/bash
for fir in f/home/xuzichen/HQYJ.XA/22101/LinuxC/20221116/fuxi
ile-dir dir-dir
do
if [ -d $dir ]
then
read -p "是否删除?" op
case $op in
y|yes)
rm -r $dir
mkdir $dir
;;
n|no)
echo "continue"
;;
esac
mkdir $dir
fi
read -p "请输入一个路径:" pathname
flist=`ls $pathname`
for list in $flist
do
filecount=0
dircount=0
if [ -f $pathname/$list ]
then
cp $pathname/$list file-dir
filecount=`expr $filecount + 1`
elif [ -d $pathname/$list ]
then
cp -r $pathname/$list dir-dir
dircount=`expr $dircount + 1`
fi
done
done
echo "filecount=$filecount"
echo "dircount=$dircount"
#!/bin/bash
for fir in $HOME/file-dir $HOME/dir-dir
do
if [ -d $dir ]
then
read -p "是否删除?" op
case $op in
y|yes)
rm -r $HOME/$dir
mkdir $dir
;;
n|no)
echo "continue"
;;
esac
mkdir $dir
fi
read -p "请输入一个路径:" pathname
flist=`ls $pathname`
for list in $flist
do
filecount=0
dircount=0
if [ -f $pathname/$list ]
then
cp $pathname/$list $HOME/file-dir
filecount=`expr $filecount + 1`
elif [ -d $pathname/$list ]
then
cp -r $pathname/$list $HOME/dir-dir
dircount=`expr $dircount + 1`
fi
done
done
echo "filecount=$filecount"
echo "dircount=$dircount"
#!/bin/bash
for fir in $HOME/file-dir $HOME/dir-dir
do
if [ -d $dir ]
then
read -p "是否删除?" op
case $op in
y|yes)
rm -r $HOME/$dir
makedir $dir
;;
n|no)
echo "continue"
;;
esac
mkdir $dir
fi
read -p "请输入一个路径:" pathname
flist=`ls $pathname`
for list in $flist
do
filecount=0
dircount=0
if [ -f $pathname/$list ]
then
cp $pathname/$list $HOME/file-dir
filecount=`expr $filecount + 1`
elif [ -d $pathname/$list ]
then
cp -r $pathname/$list $HOME/dir-dir
dircount=`expr $dircount + 1`
fi
done
done
echo "filecount=$filecount"
echo "dircount=$dircount"
#!/bin/bash
for fir in $HOME/file-dir $HOME/dir-dir
do
if [ -d $dir ]
then
read -p "是否删除?" op
case $op in
y|yes)
rm -r $HOME/$dir
makedir $dir
;;
n|no)
echo "continue"
;;
esac
mkdir $dir
fi
read -p "请输入一个路径:" pathname
flist=`ls $pathname`
for list in $flist
do
filecount=0
dircount=0
if [ -f $pathname/$list ]
then
cp $pathname/$list $HOME/file-dir
filecount=`expr $filecount + 1`
elif [ -d $pathname/$list ]
then
cp -r $pathname/$list $HOME/dir-dir
dircount=`expr $dircount + 1`
fi
done
echo "filecount=$filecount"
echo "dircount=$dircount"
#!/bin/bash
if [ ! -d $HOME/backup ]
then
mkdir $HOME/backup
fi
flist=`ls`
for file in $flist
do
if [ $# = 1 ]
then
if [ $1 == $file ]
then
echo "$file found"
exit
fi
else
cp $file $HOME/backup
echo "$file copied"
fi
done
#!/bin/bash
j=1
while [ $j -le 9 ]
do
i=1
while [ $i -le $j ]
do
mul=`expr $i \* $j`
echo -n "$i * $j = $mul"
i=`expr $i + 1`
done
echo ""
j=`expr $j + 1`
done
#!/bin/bash
j=1
while [ $j -le 0 ]
do
i=1
while [ $i -le $j ]
do
mul=`expr $i \* $j`
echo -n "$i * $j = $mul"
i=`expr $i + 1`
done
echo ""
j=`expr $j + 1`
done
#!/bin/bash
j=1
while [ $j -le 9 ]
do
i=1
while [ $i -le $j ]
do
mul=`expr $i \* $j`
echo -n "$i * $j = $mul"
i=`expr $i + 1`
done
echo ""
j=`expr $j + 1`
done
#!/bin/bash
j=0
while [ $j -le 9 ]
do
i=1
while [ $i -le $j ]
do
mul=`expr $i \* $j`
echo -n "$i * $j = $mul"
i=`expr $i + 1 `
done
echo ""
j=`expr $j + 1`
done
#!/bin/bash
j=1
while [ $j -le 9 ]
do
i=1
while [ $i -le $j ]
do
mul=`expr $i \* $j`
echo -n "$i * $j = $mul"
i=`expr $i + 1`
done
echo ""
j=`expr $j + 1`
done
#!/bin/bash
j=1
while [ $j -le 9 ]
do
i=1
while [ $i -le $j ]
do
mul=`expr $i \* $j`
echo -n " $i * $j = $mul"
i=`expr $i + 1`
done
echo ""
j=`expr $j + 1`
done
#!/bin/bash
j=1
while [ $j -le 9 ]
do
i=1
while [ $i -le $j ]
do
mul=`expr $i \* $j`
echo -n" $i * $j = $mul"
i=`expr $i + 1`
done
echo ""
j=`expr $j + 1`
done
#!/bin/bash
j=1
while [ $j -le 9 ]
do
i=1
while[ $i -le $j ]
do
mul=`expr $i \* $j`
echo -n" $i * $j=$mul"
i=`expr $i + 1`
done
echo ""
j=`expr $j + 1`
done
#!/bin/bash
j=1
while [ $j -le 9 ]
do
i=1
while [ $i -le $j ]
do
mul=`expr $i \* $j`
echo -n" $i * $j=$mul"
i=`expr $i + 1`
done
echo ""
j=`expr $j +1`
done
#!/bin/bash
j=1
while [ $j -le 9 ]
do
i=1
while[ $i -le $j ]
do
mul=`expr $i \* $j`
echo -n"$i * $j=$mul"
i=`expr $i + 1`
done
echo ""
j=`expr $j +1`
done
#!/bin/bash
j=1
while[ $j -le 9 ]
do
i=1
while[ $i -le $j ]
do
mul=`expr $i \* $j`
echo -n"$i * $j=$mul"
i=`expr $i + 1`
done
echo ""
j=`expr $j +1`
done
#!/bin/bash
j=1
while[ 1 -le 9 ]
do
i=1
while[ $i -le $j ]
do
mul=`expr $i \* $j`
echo -n"$i * $j=$mul"
i=`expr $i + 1`
done
echo ""
j=`expr $j +1`
done
#!/bin/bash
function add()
{
add=`expr $1 + $2`
#echo $add
echo "$1是子函数中的$1"
echo "$2是子函数中的$2"
return $add
}
r=`add 4 5`
echo $r
echo "$1是shell中的$1"
echo "$2是shell中的$2"
#!/bin/bash
function add()
{
add=`expr $1 + $2`
echo $add
echo "$1是子函数中的$1"
echo "$2是子函数中的$2"
return $add
}
r=`add 4 5`
echo $r
echo "$1是shell中的$1"
echo "$2是shell中的$2"
#!/bin/bash
function add()
{
add=`expr $1 + $2`
echo $add
echo "$1是子函数中的$1"
echo "$2是子函数中的$2"
return add
}
r=`add 4 5`
echo $r
echo "$1是shell中的$1"
echo "$2是shell中的$2"
#!/bin/bash
i=1
sum=0
while [ $i -le 100 ]
do
sum=`expr $sum + $i`
i=`expr $i + 1`
done
echo "sum=$sum"
#!/bin/bash
i=1
sum=0
while [ $i -le 10 ]
do
sum=`expr $sum + $i`
i=`expr $i + 1`
done
echo "sum=$sum"
#!/bin/bash
read filename
read op
case $op in
y|yes|Y|YES)
echo "确定下载"
sudo apt install $filename
;;
n|no|NO|N)
echo "取消下载"
;;
esac
#!/bin/bash
for i in {10..1..2}
do
echo "$i"
done
#!/bin/bash
for i in {10..1}
do
echo "$i"
done
#!/bin/bash
for I in {1..10}
do
echo $I
done
#!/bin/bash
for I in 1 12.34 hello
do
echo $I
done
#!/bin/bash
case $2 in
'+')
result=`expr $1 + $3`
;;
'-')
result=`expr $1 - $3`
;;
'*')
result=`expr $1 \* $3`
;;
'/')
result=`expr $1 / $3`
;;
*)
echo "输入错误"
;;
esac
echo "result=$result"
#!/bin/bash
case $2 in
'+')
result=`expr $1 + $3`
;;
'-')
result=`expr $1 - $3`
;;
'*')
result=`expr $1 \* $3`
;;
'/')
result=`expr $1 / $3`
;;
*)
echo "输入错误"
;;
esac
echo "result=$result"
#!/bin/bash
case $2 in
'+')
result=`expr $1 + $3`
;;
'-')
result=`expr $1 - $3`
;;
'*')
result=`expr $1 \* $3`
;;
'/')
result=`expr $1 \* $3`
;;
#*)
#echo "输入错误"
#;;
esac
echo "result=$result"
#!/bin/bash
case $2 in
'+')
result=`expr $1 + $3`
;;
'-')
result=`expr $1 - $3`
;;
'*')
result=`expr $1 \* $3`
;;
'/')
result=`expr $1 \* $3`
;;
*)
echo "输入错误"
;;
esac
echo "result=$result"
#!/bin/bash
if test $# -ne 1
then
echo "输入错误"
exit
fi
if test -f $1 && test -r $1
then
echo "$1是一个可读普通文件"
elif test -c $1
then
echo "$1是字符设备文件"
else
echo "$1是其它文件"
fi
#!/bin/bash
if test $# -ne 1
then
echo "输入错误"
exit
fi
if test -f $1 && test -r $1
then
echo "$1是一个可读普通文件"
#elif test -c $1
#then
# echo "$1是字符设备文件"
#else
# echo "$1是其它文件"
#!/bin/bash
if [ $# -ne 1 ]
then
echo "输入错误"
exit
fi
if [ -f $1 ] && [ -r $1 ]
then
echo "$1是一个可读普通文件"
elif [ -c $1 ]
then
"$1是字符设备文件"
else
"$1是其它文件"
#!/bin/bash
if test $# -ne 1
then
echo "输入错误"
exit
fi
if test -f $1 && test -r $1
then
echo "$1是一个可读普通文件"
elif test -c $1
then
echo "$1是字符设备文件"
else
echo "$1是其它文件"
#!/bin/bash
if test $# -ne 1
then
echo "输入错误"
exit
fi
if [ -f $1 ] && [ -r $1 ]
then
echo "$1是一个可读普通文件"
elif test -c $1
then
"$1是字符设备文件"
else
"$1是其它文件"
#!/bin/bash
if test $# -ne 1
then
echo "输入错误"
exit
fi
if test -f $1 && test -r $1
then
echo "$1是一个可读普通文件"
elif test -c $1
then
"$1是字符设备文件"
#else
#"$1是其它文件"
#!/bin/bash
if test $# -ne 1
then
echo "输入错误"
exit
fi
if test -f $1 && test -r $1
then
echo "$1是一个可读普通文件"
elif test -c $1
then
echo "$1是字符设备文件"
else
echo "$1是其它文件"
#!/bin/bash
if test $# -ne 1
then
echo "输入错误"
exit
fi
if test -f $1 && test -r $1
then
echo "$1是一个可读普通文件"
elif test -c $1
then
echo "$1是字符设备文件"
else
echo "$1是其它文件"
#!/bin/bash
if test $# -ne 1
then
echo "输入错误"
exit
fi
if test -f $1 && test -r $1
then
echo "$1是一个可读普通文件"
elif test -c $1
then
"$1是字符设备文件"
else
"$1是其它文件"
#!/bin/bash
if test $# -ne 1
then
exit
fi
if test -f $1
then
echo "yes"
else
echo "no"
fi
#!/bin/bash
test $1 -ot $2
echo $?
#!/bin/bash
test $1 -nt $2
echo $?
#!/bin/bash
test -r $1
echo $?
test -w $1
echo $?
test -x $1
echo $?
test -s $1
echo $?
#!/bin/bash
test -r $1
echo $?
test -w $1
echo $?
test -x $1
echo $?
test -s $1
echo $ddd?
#!/bin/bash
test -L $1
echo $?
#!/bin/bash
test -L $1
echo $?
#!/bin/bash
test -l $1
echo $?
#!/bin/bash
test -f $1
echo $?
#!/bin/bash
test -d $1
echo $?
#!/bin/bash
read x
read y
test $x -le $y
echo $?
#!/bin/bash
read x y
test $x -lt $y
echo $?
#!/bin/bash
read x y
test $x -ge $y
echo $?
#!/bin/bash
read x
read y
test $x -gt $y
echo $?
#!/bin/bash
read x y
test $x -ne $y
echo $?
#!/bin/bash
read x
read y
test $x -eq $y
echo $?
- 选择题(2*20)
1.在 Shell 环境中的预定义变量中,以下( )用于表示执行上一条命令后的返回状态。
A.$! B.$? C.$$ D.$0
2.下列哪些命令可以测试网络通不通?( )
A.ping B.netstat C.trace D.route
3.下面不是对Linux操作系统特点描述的是( )
A.良好的可移植性 B.稳定性低
C.多用户 D.多任务
4.目前流行的两种软件包管理机制,Debian使用( )软件包
A.zip B.rpm C.tar D.deb
5.假设目录中存在若干文件file_num.txt(num表示文件编号,1~10),使用以下( )通配符可以挑选出其中的编号为1、3、5的文件。
A. file_*.txt B. flie_?.txt C. file_[135].txt D. file_[^135].txt
6.下面代码中p和"hello,world"存储在内存哪个区域?( )
int main()
{
char *p = "hello,world";
return 0;
}
- 栈,堆 B.栈,栈 C.堆,只读存储区 D.栈,只读存储区
7.已知宏定义
#define N 3
#define Y(n)((N+1)*n)
执行语句z=2*(N+Y(5+1));变量z的值是( )
A.42 B.48 C.54 D.出错
8.下述程序第二次的输出结果是( )
int main(){
extern int a;
int b=0;
static int c;
a+=3;
other();
b+=3;
other();
}
int a=5;
void other(void){
int b=3;
static int c=2;
a+=5;b+=5;c+=5;
printf(“%d,%d,%d”,a,b,c);
c=b;
}
A.13,0,13 B.18,8,13
C.13,8,13 D.18,8,0
9.以下程序的运行结果为( )
void sub(int x, int y, int *z)
{
*z = y – x ;
}
int main(void)
{
int a,b,c ;
sub(10, 5, &a) ;
sub(7, a, &b) ;
sub(a, b, &c) ;
printf( “%4d,%4d, %4d\n”,a,b,c);
}
- 5, 2, 3 B. -5, -12, -7 C. -5, -12, -17 D. 5, -2, -7
10.下述程序的输出结果是( )。
int main(void)
{
int Y=100;
while(Y--);
printf(“Y=%d”,Y);
}
- Y=0 B. Y=1 C. Y=-1 D. Y=随机数
11.在C语言中,数组作为函数的形参,函数调用时,若用数组名作为函数的实参,则实际上’传递给形参的是( ) 。
A.数组首地址 B.数组的第一个元素值
C.数组中全部元素的值 D.数组元素的个数
12.int *p[4] 与选择项中的说明 ( ) 等价
A. int p[4] B. int *p C. int *(p[4]) D. int (*p)[4]
13.在给定文件中查找与设定条件相符字符串的命令为( )
A. grep B. gzip C. find D. sort
14.在一个C源程序文件中,若要定义一个只允许在本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是( )
A. extern B. static C. auto D. register
15.下面这段C程序的输出是 ( )
void foo(int b[][3])
Void foo(int (*p)[3])
{
++b;
b[1][1] = 9;
}
void main()
{
int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}};
foo(a);
printf(""%d"",a[2][1]);
}
A.8 B.9 C.7 D.以上均不对
16. 以下程序的功能是将字符串s中所有的字符c删除,那么空白处缺少的语句为:( )。
#include <stdio.h>
int main(void)
{
char s[80] ;
int i, j ;
gets(s) ;
for ( i = j = 0 ; s [i] != ‘\0’ ; i++ )
if ( s [i] != ‘c’ )
( ? );
s [ j ] = ‘\0’ ;
puts ( s ) ;
return 0 ;
}
- s[j++] = s[i] B. s[++j] = s[i] C. s[j] = s[i]; j++ D. s[j] = s[i]
- 以下程序的输入结果是( )
#include <stdio.h>
typedef union
{ long i;int k[5];char c; } DATE;
struct date
{ int cat;DATE cow;double dog; } too;
DATE max;
void main()
{
printf("%d\n",sizeof(struct date)+sizeof(max));
}
A.32 B.48 C.52 D.68
- 由多个源文件组成的C程序,经过编辑、预处理、编译、链接等阶段会生成最终的可执行程序。下面哪个阶段可以发现被调用的函数未定义?( )
A. 预处理 B. 编译 C. 链接 D. 执行
- 若要将当前目录中的myfile.txt文件压缩成myfile.txt.tar.gz,则实现的命令( )
A. tar -cvf myfile.txt myfile.txt.tar.gz
B. tar -zcvf myfile.txt myfile.txt.tar.gz
C. tar -zcvf myfile.txt.tar.gz myfile.txt
D. tar -cvf myfile.txt.tar.gz myfile.txt
- 以下关于头文件,说法正确的是()
- #include<filename.h>,编译器寻找头文件时,会从当前编译的源文件所在的目录去找
- #include“filename.h”,编译器寻找头文件时,会从指定的目录去找
- 多个源文件同时用到的全局整数变量,它的声明和定义都放在头文件中,是好的编程习惯
- 在大型项目开发中,把所有自定义的数据类型、全局变量、函数声明都放在一个头文件中,各个源文件都只需要包含这个头文件即可,省去了要写很多#include语句的麻烦,是好的编程习惯。
作者:徐子宸
来源:原创
日期:2022年11月16日