著之前有關面試的系列文章,讀者的反應比較強烈,所以我決定出一篇有關Linux Shell相關的面試文章,如果對本文有什麼意見或意見的話,歡迎反饋到我的郵箱裡。
如果想要閱讀已發表在Tecmint.com的文章,可以點擊鏈接,鏈接到訪談系列,在這裡我們已經介紹很多題目即文章。,FTP,MySQL和Apache的,腳本,Linux命令等。
Linux Shell腳本的10個有用的“面試問題和解答” http://www.linuxidc.com/Linux/2014-05/102374.htm
Linux Shell參數替換 http://www.linuxidc.com/Linux/2013-06/85356.htm
Shell for參數 http://www.linuxidc.com/Linux/2013-07/87335.htm
Linux/Unix Shell 參數傳遞到SQL腳本 http://www.linuxidc.com/Linux/2013-03/80568.htm
Shell腳本中參數傳遞方法介紹 http://www.linuxidc.com/Linux/2012-08/69155.htm
Shell腳本傳遞命令行參數 http://www.linuxidc.com/Linux/2012-01/52192.htm
實用的shell腳本面試問題
這邊提到的5個面試問題,延續之前的有關Linux面試問題和答案。如果你是Tecmint.com的讀者,你的支持我非常感謝。
1. 寫一個shell腳本來得到當前的日期,時間,用戶名和當前工作目錄。
答案 : 輸出用戶名,當前日期和時間,以及當前工作目錄的命令就是logname,date,who i am和pwd。
現在,創建一個名為userstats.sh文件,將下面的代碼添加到它。
- #!/bin/bash
- echo "Hello, $LOGNAME"
- echo "Current date is `date`"
- echo "User is `who i am`"
- echo "Current directory `pwd`"
給它添加執行權限,並且執行他。
- # chmod 755 userstats.sh
- # ./userstats.sh
樣例輸出
- Hello, avi
- Current date isSatJun713:05:29 IST 2014
- Useris avi pts/02014-06-0711:59(:0)
- Current directory /home/avi/Desktop
2.寫一個shell腳本,進行兩個數字的相加,如果沒有輸入參數就輸出錯誤信息和一行使用說明
答案 : 下面是簡單的shell腳本以及描述,如果沒有命令行參數,它會拋出錯誤與如何使用腳本的說明。
再創建一個名為twonumbers.sh文件和下面的內容添加到文件裡。
- #!/bin/bash
- # The Shebang
- if[ $# -ne 2 ]
- # If two Inputs are not received from Standard Input
- then
- # then execute the below statements
- echo "Usage - $0 x y"
- # print on standard output, how-to use the script (Usage - ./1.sh x y )
- echo " Where x and y are two nos for which I will print sum"
- # print on standard output, “Where x and y are two nos for which I will print sum ”
- exit1
- # Leave shell in Error Stage and before the task was successfully carried out.
- fi
- # End of the if Statement.
- echo "Sum of $1 and $2 is `expr $1 + $2`"
- # If the above condition was false and user Entered two numbers as a command Line Argument,
- it will show the sum of the entered numbers.
給他添加可執行權限,並且執行。
- # chmod 755 two-numbers.sh
情形一: 未輸入兩個數字作為命令行參數運行腳本,你將得到下面的輸出。
樣例輸出
- # ./two-numbers.sh
- Usage-./two-numbers.sh x y
- Where x and y are two nos for which I will print sum
情形二: 當數字存在時,你會得到如圖所示的結果。
- $ ./two-numbers.sh 45
- Sum of 4and5is9
因此,上述shell腳本滿足了問題的要求。
3.你需要打印一個給定的數字的反序,如輸入10572,輸出27501,如果沒有輸入數據,應該拋出錯誤和使用腳本說明。在此之前,告訴我你需要在這裡使用的算法。
算法
- 輸入的數字為n
- 賦值 rev=0, sd=0 (反向和單個數字設置為0)
- n % 10, 將得到最左邊的數字
- 反向數字可以用這個方法生成 rev * 10 + sd
- 對輸入數字進行右位移操作(除以10)
- 如果n > 0, 進入第三步,否則進行第七步
- 輸出rev
現在,創建一個名為`numbers.sh`文件,並添加以下代碼。
- #!/bin/bash
- if[ $# -ne 1 ]
- then
- echo "Usage: $0 number"
- echo " I will find reverse of given number"
- echo " For eg. $0 0123, I will print 3210"
- exit1
- fi
- n=$1
- rev=0
- sd=0
- while[ $n -gt 0]
- do
- sd=`expr $n % 10`
- rev=`expr $rev \* 10 + $sd`
- n=`expr $n / 10`
- done
- echo "Reverse number is $rev"
授予對文件的執行權限,並運行如下所示的腳本。
- # chmod 755 numbers.h
情形一: 當輸入不包含命令行參數,你將得到下面的輸出。
樣例輸出
- ./numbers.sh
- Usage:./numbers.sh number
- I will find reverse of given number
- For eg../2.sh123, I will print321
情形二: 正常輸入
- $ ./numbers.sh 10572
- Reverse number is27501
上面的腳本非常完美,輸出正是我們需要的。
4. 你應該直接用終端,而不是依靠任何shell腳本來進行實數計算。你會怎麼做(比如實數7.56+2.453)?
答案 : 我們需要用如下所述的特殊方式使用bc命令。將7.56+2.453作為輸入通過管道進入bc中。
- $ echo 7.56+2.453| bc
- 10.013
5. 你需要給出圓周率的值,精度為小數點後100位,什麼是最簡單的方法。
答案 : 找圓周率的值最簡單的方法,我們只是需要發出以下命令。
- # pi 100
- 3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067
很明顯!安裝我們必須有包pi。只用一個apt或yum命令,就能獲得所需的軟件包,同時用最簡單方法來實現這個需求。
就是這樣。我會很快在Tecmint.com發表另一個有趣的文章。至此敬請關注。別忘了向我們提供您在的評論和反饋。