shell练习题(1)

1、安装JDK及配置环境变量。

mkdir /usr/jave   #创建java目录
tar -xf jdk-8u60-linux-x64.tar.gz -C /usr/java
vim /etc/profile.d/java.sh
#! /bin/bash
export JAVA_HOME=/usr/jave/jdk1.8.0_60/
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin

source /etc//profile.d/java.sh #重新导入配置
java -version   #查看Java版本

shell练习题(1)_第1张图片
2、Shell脚本中,$0 $1 $$ $* $?分别代表了什么意思?

$0    脚本执行名称
$1    位置变量
$$    程序进程号
$*    显示所有的位置变量
$?    检测上一条指令的结果, 0:正确  非0:错误

3、写一个脚本:显示出当前的脚本文件名和当前的系统时间。

#! /bin/bash
echo "当前的系统时间为: `date`"
echo "当前的脚本名为:$0"

4、已知目录/scripts目录,执行batch.sh脚本,实现在/scripts目录下创建一个one.txt,在one.txt文件中增加内容“Hello Shell”。

#! /bin/bash
path=/scripts
ls / | grep scripts &> /dev/null
if [ $? -ne 0 ] ;then
	echo "scripts目录不存在"
	mkdir /scripts
	echo "已自动创建"
fi

cd $path
if [ $UID -ne 0 ] ;then
	echo "权限不足"
	exit 1
fi
echo "Hello Shell" > $path/one.txt
echo "已成功添加内容"

5、取出/etc/inittab文件的第6行;

#! /bin/bash
[ $UID -ne 0 ] && echo "Permission deried" && exit
read -p "请输入你要查看文件的绝对路径:" path
read -p "请输入你要查看第几行:" R
awk -F: "NR==$R {print}" $path

6、取出当前系统上所有用户的shell,要求,每种shell只显示一次,并且按顺序进行显示; 使用cut、sort结合管道实现

#! /bin/bash
if [ $UID -ne 0 ]; then 
	echo "Permission deried"
fi
echo "当前服务器的登录shell有:"
cut -d: -f 7 /etc/passwd |sort -u

7、如果/var/log/messages文件的行数大于100,就显示好大的文件

#! /bin/bash
if [ $UID -ne 0 ]; then
	echo "Permission denied"
	exit 1
fi
sum=`cat /var/log/messages | wc -l`
if [ $sum -le 100 ]; then
	echo "文件不大"
else
	echo "文件好大"
fi

8、显示/etc目录下所有以pa开头的文件,并统计其个数

#! /bin/bash
if [ $UID -ne 0 ]; then
	echo "Permission denied"
fi
read -p "请输入要查找的路径:" path
find $path -maxdepth 1 -name 'pa*' -type f
sum=`find $path -maxdepth 1 -name "pa*" -type f | wc -l`
echo "sum is $sum"

9、如果用户hadoop不存在就添加,否则显示用户已存在

#! /bin/bash
if [ $UID -ne 0 ]; then 
	echo "Permission deried"
	exit 1
fi
id hadoop &> /dev/null
if [ $? -eq 0 ]; then 
	echo "用户已存在"
	exit 
else
	useradd hadoop
	stty -echo   
	read -p "Please enter the password:" pass
	echo $pass | passwd --stdin hadoop &> /dev/null
	stty echo
	echo Password set successfully
fi

10、编写一个 Shell 程序 test1,程序执行时从键盘读入一个目录名,然后 显示这个目录下所有文件的信息

#! /bin/bash
read -p "输入目录:" path
ls -l  $path/

11、编写一个 Shell 程序 test2,从键盘读入 x、y 的值,然后做加法运算,最后输出结果

#! /bin/bash
read -p "Enter the first number:" A
[ -z $A ]&& echo "输入错误:输入为空"&& exit 1
expr $A + 1 &>/dev/null
if [ $? -ne 0 ];then
  echo "输入错误,请输入数字"
  exit 2
fi

read -p "Enter the second number:" B
[ -z $B ]&& echo "输入错误:输入为空"&& exit 1
 expr $B + 1 &>/dev/null
if [ $? -ne 0 ];then
  echo "输入错误,请输入数字"
  exit 2
else
  sum=$[$A+$B]
  echo "sum is $sum"    
fi

你可能感兴趣的:(shell,bash,开发语言)