shell脚本小练习
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
提示用户输入一个数,判断这个数是否是你想要的。想要的就打出 yes,否则就是no。
#!/bin/bash
numWanted=8
read -p "please input a number:" num
if [ -n "$num" -a "$num" -gt "$numWanted" ]; then
echo "yes"
else
echo "no"
fi
#其他方法
[ "$num" ] && [ "$num" -gt "$numWanted" ] && echo "yes" && exit 0
echo "no"
exit 1
提示用户输入一个文件/目录,判断这个文件具有哪些属性?
#!/bin/bash
read -p "please input a filename: " filename
if [ -z "$filename" ]; then
echo "you need to input a filename"
exit 1
fi
#检测文件是否存在
test ! -e "$filename" && echo "$filename doesn't exist" && exit 1
#判断文件类型
if [ -f "$filename" ]; then
filetype="regular file"
elif [ -d "$filename" ]; then
filetype="directory"
else
echo "$filename is neither a regular file nor a directory"
exit 1
fi
#判断文件读写执行权限
[ -r "$filename" ] && perm="readable"
[ -w "$filename" ] && perm="$perm writable"
[ -x "$filename" ] && perm="$perm executable"
#输出
echo -e "\nThe filename: $filename is a $filetype"
echo "And the permissions are: $perm"
写一个输入新的文件名,就自动创建C源文件的脚本程序
文件一:源文件模板ctemplate
#include
int main(int argc,char *argv[])
{
return 0;
}
文件二:脚本文件createC.sh
#!/bin/bash
#判断是否提供了一个文件名
if [ "$#" -ne 1 ]; then
echo "you need to input one "
exit 1
fi
#判断该文件是否已经存在
if [ -e "$1" ]; then
echo "filename $1 has existed."
exit 1
fi
#创建带有main函数的源文件
if ! cp /root/shtest/ctemplate $1 2>/dev/null
then
echo "create file error"
exit 1
fi
vim $1
提示用户输入一字符串,字符串必须为 “case”或者”esac” ,并打印出来。如果输入的是其他字符串打印出错消息。
#!/bin/bash
read -p "please input string 'case' or 'esac': " str
test -z "$str" && echo "you need to input a string" && exit 1
case "$str" in
"case")
echo "you input case"
;;
"esac")
echo "you input esac"
;;
*)
echo "input error!"
;;
esac
系统上面的各种账号都是写在/etc/passwd 内的第一个字段,你能不能通过命令cut找出每个账号的名称,用命令id、finger 输出他们的相关信息呢?
#!/bin/bash
users=$(cut -d ':' -f 1 /etc/passwd)
for username in $users
do
id $username
finger $username
done
若想让用户输入一个目录名, 然后我找出该目录内的每个文件的读写执行权限,该如何做?
#!/bin/bash
read -p "please input a directory: " dirname
if [ -z $dirname -o ! -d $dirname ]; then
echo "input error or directory $dirname not found"
exit 1
fi
files=$(ls $dirname)
for filename in $files
do
perm=""
test -r $filename && perm="readable"
test -w $filename && perm="$perm writable"
test -x $filename && perm="$perm executable
"
echo "$filename: $perm"
done
让用户输入一个数字,程序可以由 1+2+3... 一直累加到用户输入的数字为止。
#!/bin/bash
read -p "please input a number that is bigger than 0: " num
if [ $num -lt 1 ]; then
echo "you need to input a number bigger than 0"
exit 1
fi
sum=0
for ((i=1;i<=$num;i++))
do
sum=$(($sum+$i))
done
echo "your number is $num, sum is $sum"