Chinaunix首页 | 论坛 | 博客
  • 博客访问: 174556
  • 博文数量: 76
  • 博客积分: 3560
  • 博客等级: 中校
  • 技术积分: 860
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-17 13:02
文章存档

2011年(2)

2010年(41)

2009年(33)

我的朋友

分类: LINUX

2010-09-21 16:37:37

zw047
二道shell面试题

1.按照给出的运行结果,编写一个名为xunhuan 的shell过程(用循环语句)。
0
10
210
3210
43210
543210
6543210
76543210
876543210



2.编写一个名为cala的shell过程,其功能是小型计算器,可以进行两数加、减、乘、除运算。两操作数和运算符由位置参数给出(位置参数1和3分别是两操作数,位置参数2是运算符),并将四种运行结果追加存入cal文件中。

我第二道没做出大家帮我看看

drowsyboy
回复 #1 zw047 的帖子

1.

A=""; for i in `seq 0 8`; do A=$i$A ; echo $A ; done

nuclearxin
first one
[code]
for ((i=0;i<9;i++))
do
a=$i$a
echo $a
done
[/code]

linuxnextyear
[code]
#!/bin/bash

N=9

for(( i=0;i<=$N;i++ ))
do
  for(( j=$i;j>=0;j-- ))
  do
    echo -n $j
  done
  echo
done
[/code]

woodie
[quote]原帖由 [i]nuclearxin[/i] 于 2008-5-22 11:13 发表 [url=][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
first one

for ((i=0;i [/quote]
不错!用一层循环就够了。

drowsyboy
回复 #1 zw047 的帖子

2.

bc ?

好像,小数点有问题....

woodie
[quote]原帖由 [i]drowsyboy[/i] 于 2008-5-22 11:17 发表 [url=][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
2.

bc ?

好像,小数点有问题.... [/quote]
小数点有什么问题?
直接用:
printf "%s = " "$*" >> cal
echo $* | bc >> cal

jwb0000
回复 #7 woodie 的帖子

echo "" | awk '{print '$1$2$3'}' >> cal

MYSQLER
[code]for ((i=0;i<9;i++));do a=$i$a;echo $a;done[/code]

[code]0876543210876543210876543210
10876543210876543210876543210
210876543210876543210876543210
3210876543210876543210876543210
43210876543210876543210876543210
543210876543210876543210876543210
6543210876543210876543210876543210
76543210876543210876543210876543210
876543210876543210876543210876543210
[/code]

结果为什么是这样而放在脚本里面执行就没错?谁说明一下这个脚本a=$i$a

springwind426
[code]
a=;for ((i=0;i<9;i++));do a=$i$a;echo $a;done
[/code]

如果不初始化变量a的话,会累积的

zw047
[quote]原帖由 [i]springwind426[/i] 于 2008-5-22 14:02 发表 [url=][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]

a=;for ((i=0;i [/quote]
对,结果是对的我就是这样写的

第二题我写了
a=$1
b=$2
c=$3
case $b in
+ ) sum=`expr $a + $c`;;
- ) sum=`expr $a - $c`;;
/* ) sum=`expr $a /* $c`;;
/ ) sum=`expr $a / $c`;;
* ) echo "operation error!";;
esac
echo "$a$b$c=$sum"


结果运行不对 ./calc 1+1
没结果,不知道为啥 看看吧

liaosnet
回复 #11 zw047 的帖子

结果都不弄出来。。怎么行咧。。

zw047
[quote]原帖由 [i]liaosnet[/i] 于 2008-5-22 16:45 发表 [url=][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
结果都不弄出来。。怎么行咧。。 [/quote]
那你说说看哪错了

liaosnet
回复 #13 zw047 的帖子

你执行报什么错。.....:em17: :em17: :em17:

liaosnet
#!/bin/sh
a=$1
b=$2
c=$3
case $b in
    +) sum=`expr $a + $c`;;
    -) sum=`expr $a - $c`;;
    /*) sum=`expr $a /* $c`;;
    /) sum=`expr $a / $c`;;
    *) echo "operation error!";;
esac
echo "$a$b$c=$sum"

这个程序要注意输入*时也要输入/*.
当3 / 4时会显示0...这样的写法应该不怎么合适。。呵。。

zw047
[quote]原帖由 [i]liaosnet[/i] 于 2008-5-22 16:59 发表 [url=][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
你执行报什么错。.....:em17: :em17: :em17: [/quote]
你试了吗?结果是
./calc 1+1后

出来1+1=expr $a+$c 这么个结果

应该是2才对

liaosnet
$ ./cacl 1 + 3
1+3=4

输入要带空格。。否则你需要在shell做分析了。

youyu_buzai
a="";
for  i  in 'seq 0 8'
do
a=$i$a;
echo $a;
done

顶下

Herry_DLZeng
#!/bin/bash
for i in `seq 0 8`
do
let "a=$i$a"
echo $a
done

ocean390
如果不考虑输入错误的话,第二个这样写应该就可以了
[table=95%][tr][td][font=FixedSys]function calc(){
echo $(($@))
}>>cal[/font][/td][/tr][/table]
 
1. Write a shell script only to list the hidden items of a designated directory. The designated directory must be acquired as a command parameter. If the parameter is not a directory, print a warning message.


2. Write a shell script to remove all the empty .txt files in your current directory and print the number of removed files.


3. There is a famous game which is "counting seven". Now we use shell script to implement the game. Print the numbers from 1 to 1000, omitting the number which has 7 in it or is a multiple of 7.
 
阅读(326) | 评论(0) | 转发(0) |
0

上一篇:shell 面试题

下一篇:shell 面试题(2)

给主人留下些什么吧!~~