酷!學園
其他討論區 => 肉腳版 => 主題作者是: Judal 於 2004-04-09 13:55
-
我們老師叫我們寫一個可以讓使用者輸入密碼的shell,當輸入錯誤可以再輸入三次,三次之後就跳出來
#! bin/bash <---這是什麼意思,老師只說程式第一行一定要寫這個,但我看不懂,是指在bin下面建立一個名為bash檔的shell嗎?
echo "please input your passwd:"
if [passwd=123];
then
echo this is a:
.
.
.
.
怎麼判斷使用者輸入三次,我就是卡在這不會寫Q_Q
[/code]
-
第一行是只定執行此script的Shell~~
如果你用#!/bin/csh就是用csh來run~反之你現在這個就是用bash
另外~~要讀使用者的輸入~可以參考三個部份~~
read,case,getopts~~~你用read試試就可以了
至於輸入三次~就用判斷式去跑吧
-
第一行是告訴 sh 說,接下來的指令都是要用 /bin/bash 處理~
-
迴圈 3 次 , 問完 3 次就出迴圈啦
-
tips:
1) #!/bin/sh 請看:
http://www.study-area.org/linux/system/linux_shell.htm
2) 要用 read 讀進 passwd
3)[ expression ] 裡的 test ,要在 [ ] 之間留空白鍵﹗
4) for i in 1 2 3; do .....; done 就有三次 looping 。你可在 [ xxxx ] test 成功後,用 break 來打斷 looping 。
-
#! bin/bash
if [passwd=123];
then
echo "welcome user"
else
for(i=1;i++)
echo "please input your passwd:"
/if
那是這樣寫嗎?
-
邏輯就不通了吧!!!!
-
一步一步慢慢來...
先來練一下 [ exp ] 的寫法:
a=b
[ "$a" = b ] && echo 'bingo!'
若做得出結果,我再教你下一步...
-
一步一步慢慢來...
先來練一下 [ exp ] 的寫法:
a=b
[ "$a" = b ] && echo 'bingo!'
若做得出結果,我再教你下一步...
a=b
而a的變數等於b
輸入b,則印出'bingo!' ??
應該........不對吧^^||||
這就是沒有電腦的痛苦 :(
偏偏星期五又要交作業...........
-
我請你照打,是有目的的:你就是"打字不小心"而已...
-
a=b
而a的變數等於b
輸入b,則印出'bingo!' ??
應該........不對吧^^||||
這就是沒有電腦的痛苦 :(
偏偏星期五又要交作業...........
沒有電腦??那你怎麼上來發問的呢?
-
netman
我請你照打,是有目的的:你就是"打字不小心"而已...
看沒!
dean 發表於: 星期一 四月 12, 2004 10:58 pm 文章主題:
沒有電腦??那你怎麼上來發問的呢?
我是說我沒有自已的電腦可以跑linux,但我可以去地下室借電腦來用
作業只能在上linux課的當天上傳了
-
少囉嗦,將你的打字結果貼上來吧....
-
dean 發表於: 星期一 四月 12, 2004 10:58 pm 文章主題:
沒有電腦??那你怎麼上來發問的呢?
我是說我沒有自已的電腦可以跑linux,但我可以去地下室借電腦來用
作業只能在上linux課的當天上傳了
紙上作業是不可能學會程式的,
趕快去燒一片Knoppix ( http://knoppix.tnc.edu.tw/ )
到哪兒都可以玩linux。
-
thyme
紙上作業是不可能學會程式的,
趕快去燒一片Knoppix ( http://knoppix.tnc.edu.tw/ )
到哪兒都可以玩linux。
...........
我是說我在學校除了電腦課能用之外
在家不能用,在宿舍也不能用
你要我怎麼燒啊?
netman 少囉嗦,將你的打字結果貼上來吧....
我.........
真的不知道你要我做什麼..........
-
要繳交作業之前,先把你的環境先搞定喔...!!!
有砍樹沒有鋸子或斧頭怎麼砍的了?
-
...........
我是說我在學校除了電腦課能用之外
在家不能用,在宿舍也不能用
你要我怎麼燒啊?
你連鍋子都沒有,我們很難教你炒菜的.....
良心建議:
再花兩萬元買一台電腦,
或向好朋友藉電腦,
或花幾十元到網咖用電腦(我沒去過網咖,不確定可否玩linux),
或找同學抄一下答案,記得順便把變數名稱改一下。
-
套一句Netman大大的話,方案 and 解決方案
套用一些thyme的方案,綜歸如下..
方案一,趕緊存錢買電腦.
方案二,向好朋友借電腦.
方案三,花幾十元到網咖用電腦(我也不確定可否玩linux).
方案四,找同學抄一下答案,記得順便把變數名稱改一下。
方案五,把握下課時間,把握放學時間,把握日夜間部交替時間,努力的往電腦教室跑,一般學校電腦教室應該都有開放學生研習用吧?! (還記得玩VAX的時代,也是搶下課時間去玩,還借用到別班的時間咧!)
解決方案可能方案四,因為他星期五就要交作業了..^^||
如果學校方便,那方案五也可,如果朋友方便,那方案二也不錯..
如果這些你都不滿意,那你到網咖去,我開SSH給你用putty..
Best solution 是存錢買電腦.如果你真的很想學但卻沒錢就賣力打工,少玩點,多做點.
-
netman 少囉嗦,將你的打字結果貼上來吧....
我.........
真的不知道你要我做什麼..........
我本來要你透過實作看清楚下面兩行差在哪:
[ "$a" = b ]
["$a"=b]
然後我再教你如何作 string test ,
再教你如何用 read ,
接下來如何寫 for loop ,及 break 。
不過,看來我期望太高了...
-
team Best solution 是存錢買電腦.如果你真的很想學但卻沒錢就賣力打工,少玩點,多做點.
沒時間啊!
我其它的功課都顧不好了
再去打工的話我可能就要21了
team 方案二,向好朋友借電腦.
我們班都沒有人灌linux
team 方案三,花幾十元到網咖用電腦(我也不確定可否玩linux).
哈.....哈.......
我對網咖有不好的回憶
所以不去了
方案五,把握下課時間,把握放學時間,把握日夜間部交替時間,努力的往電腦教室跑,一般學校電腦教室應該都有開放學生研習用吧?! (還記得玩VAX的時代,也是搶下課時間去玩,還借用到別班的時間咧!)
但我們學校一般的電腦只有開放三樓,有灌linux的是在五樓也沒開放.......
如果要灌的話,我還怕灌到一半當機.......
我可能選方案四吧!依我們班的習慣的話,八成是當天就有一堆人在抄了
不過每次看見的板本都是差不多的.......
不過,看來我期望太高了.....
抱歉!辜負你的期望了.........
-
真是拿你沒辦法,下面這段 code 你自己慢慢改吧:
#!/bin/bash
secret=xyz+abc
for i in 1 2 3; do
echo -n "Your password: "
read password
[ "$password" = "$secret" ] && {
echo "Good!" ; break; } || {
[ $i -lt 3 ] && echo "Sorry, try again."
}
done
-
謝謝你!
也為了不能被你教說聲「對不起」
-
是否說教對我來說不重要,我所關心的是:
--- 到酷學園來真的學到東西嗎?
我再強調,來這學習技術是次要的,更重要是學習者本身有否得到提升。
若你自己在這裡學不到如何成長,就算問到一萬個答案,也是無用的。
年輕人:多聽一下老人家的話吧,他們並不想害你的。
-
N 老的意思是說:您學到了”學習的技巧”了嗎?
我想,其中應該可以解釋為”學習的方法”和”學習的態度”。
這也是我常對我家那兩小蘿葡訓的話。
--
不小心又離題灌水一篇。 ^_^
-
我覺得有時候用笨笨的多copy幾行也蠻方便的。
#!/bin/bash
pass_ok="123"
[ "$pass_ok" != "$pass" ] && echo "please input your passwd:" && read pass
[ "$pass_ok" != "$pass" ] && echo "Sorry, try again:" && read pass
[ "$pass_ok" != "$pass" ] && echo "Sorry, try again:" && read pass
[ "$pass_ok" = "$pass" ] && echo "Good"
-
#! /bin/bash
echo "輸入密碼:"
declare -i i
i=0;
while [$i!=3]
do
read passwd
if [$passwd=ok1234];
then
while [$i!=3]
do
echo "1)顯示硬碟資訊"
echo "2)顯示日期"
echo "3)顯示所有檔案"
echo "4)啟動telnet <----
echo "5)離開"
echo "請選擇:"
read choice
case $choice in
1)df -k;;
2)date;;
3)ps -ef;;
4)service xineted restart <-----
5)echo "bye bye"
exit;;
esac;
done
else
i=$i+1
if [$i=3];
then
echo "try again!"
else
echo "password is wrong!"
fi
fi;
done
上面的程式幫我看一下,如果我要加入啟動telnet的功能,是不是就像我箭號所指的寫法一樣?
我會來到酷學園當然是為了學習而來,而且我也是有學到東西的!
-
其它我不說,光下面這個就有問題:
[$i!=3]
還記得我之前說你的毛病在哪了嗎?
-----> 打字不小心﹗
還記得我要你比較哪兩行來著?
-----> [ "$a" = b ]
-----> ["$a"=b]
然後再看你的這行錯在哪?
[$i!=3]
-
netman 其它我不說,光下面這個就有問題:
[$i!=3]
還記得我之前說你的毛病在哪了嗎?
-----> 打字不小心﹗
還記得我要你比較哪兩行來著?
-----> [ "$a" = b ]
-----> ["$a"=b]
然後再看你的這行錯在哪?
[$i!=3]
我是錯在[ "$i" != "$3" ]沒錯吧?
可我程式是copy我們班的,老師拿來講解時可以執行啊!
-
老師拿來講解時可以執行啊!
我只問一句就好:
----> 你有"實際"上跑過嗎?
-
有啊!
課堂上跑的啊!
-
那你再跑一次看看?
-
現在.........
借不到!
-
那,等你借到再繼續吧...
寫 script 這東西,沒有實作,很難討論。
-
ok!
-
你好..我是抱著學習的心態來的..
關於shell的指令與用法..坊間是否有書籍可以參考?
-
書很多,我特別推薦 O'Reilly 的 Learning the Bash Shell 。
或,你先從我的 shell 十三問開始也行:
http://www.study-area.org/tips/shell.txt
-
其它我不說,光下面這個就有問題:
[$i!=3]
還記得我之前說你的毛病在哪了嗎?
-----> 打字不小心﹗
還記得我要你比較哪兩行來著?
-----> [ "$a" = b ]
-----> ["$a"=b]
然後再看你的這行錯在哪?
[$i!=3]
看來這篇是學shell的好機會...
在此感謝netman
感謝喔