Linux编程基础案例:第4章Shell编程

案例4-1:已知/etc/passwd文件中的各项以:分隔,若使用awk命令处理/etc/passwd文件,提取其中的第1项和第3项,并使用空格分隔提取结果,则可以使用如下命令。

awk -F: ‘{print $1 “” $3}’ /etc/passwd

案例4-2:在Shell脚本中定义变量并进行引用。

#!/bin/sh
var="hello itheima"
echo $var
echo "$var"
echo '$var'
exit 0

案例4-3:输入文件名,判断文件是否为目录,若是,则输出“[文件名]是个目录”。

#!/bin/sh
#单分支if语句
read filename
if [ -d $filename ]; then
    echo $filename" is a directory"
fi
exit 0

案例4-4:输入文件名,判断文件是否为目录,若是,则输出“[文件名]是个目录”;否则输

出“[文件名]不是目录”。

#!/bin/sh
#双分支if语句
read filename
if [ -d $filename ]; then
    echo $filename" is a directory"
else
    echo $filename" is't a directory"
fi
exit 0

案例4-5:判断一个文件是否为目录,若是,输出目录中的文件;若不是,判断该文件是否可执行。若能执行,输出“这是一个可执行文件”;否则输出“该文件不可执行”。

#!/bin/sh
read filename
if [ -d $filename ]; then
    ls $filename
elif [ -x $filename ]; then
    echo "This is a executable file."
else
    echo "This is not a executable file."
fi
exit 0

案例4-6:编写脚本,脚本可输出一个包含Android、Java、C++、IOS这四项的目录。脚本根据用户的选择,输出对应的内容,如Your have selected C++。

#!/bin/sh
#select条件语句
echo "What do you want to study?"
select subject in "Android" "Java" "C++" "IOS"
do
    echo "You have selected $subject."
break
done
exit 0

案例4-7:实现一个简单的四则运算,要求用户从键盘输入两个数据和一个运算符。脚本程序根据用户输入,输出计算结果。

#!/bin/sh
echo -e "a:\c"
read a
echo -e "b:\c"
read b
echo -e "select(+ - * /):\c"
read var
case $var in
    '+') echo "a+b="`expr $a "+" $b`;;
"-") echo "a-b="`expr $a "-" $b`;;
"*") echo "a*b="`expr $a "*" $b`;;
"/") echo "a/b="`expr $a "/" $b`;;
*) echo "error"
esac
exit 0

案例4-8:使用for循环输出月份列表中的12个月份。

#!/bin/sh
for month in Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
do
    echo -e "$month\t\c"
done
echo
exit 0

案例4-9:在当前目录的itheima文件夹中存放着多个以.bxg为后缀的文件,使用for循环将其中所有以.bxg结尾的文件删除。

#!/bin/sh
for file in ~/itheima/*.bxg
do
    rm $file
    echo "$file has been deleted."
done
exit 0

案例4-10:使用while循环计算整数1~100的和。

 

#!/bin/sh
count=1
sum=0
while [ $count -le 100 ]
do
    sum=`expr $sum + $count`
    count=`expr $count  + 1`
done
echo "sum=$sum"
exit 0

案例4-11:使用until循环输出有限个数据。

#!/bin/sh
#until
i=1
until [ $i -gt 3 ]
do
    echo "the number is $i."
    i=`expr $i + 1`
done
exit 0

案例4-12:利用脚本case_test(4.4.4节中的案例4-7)测试-n选项的用法。

sh -n case_test

案例4-15:定义一个hello函数,该函数可以输出hello itheima,并在脚本中使用该函数。

#!/bin/sh
#function hello
function hello(){
    echo "hello itheima."
}
#main
hello #hello函数调用
exit 0

案例4-16:分别为脚本中的位置变量和函数中的位置变量传参。

#!/bin/sh
#function
function _choice(){
    echo "Your chioce is $1."
}
#main
case $1 in
    "C++" ) _choice C++ ;;
    "Android" ) _choice Android ;;
    "Python" ) _choice Python;;
    *) echo "$0:please select in (C++/Android/Python)"
esac
exit 0

案例4-17:验证Shell脚本函数中定义的变量是否是局部变量。

#!/bin/sh
function fun(){
a=10
echo "fun:a=$a"
}
a=5
echo "main:a=$a"
fun #函数调用
echo "main:a=$a"
exit 0

案例4-18:使用local在函数中定义一个局部变量。

#!/bin/sh
function fun(){
    local a=10
    echo "fun:a=$a"
}
a=5
echo "main:a=$a"
fun             #函数调用
echo "main:a=$a"
exit 0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一条小橘猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值