ウェブサイト検索

Linux シェル スクリプトに関する実践的な面接の質問と回答


Linux ハウツー Web サイトとしては初のインタビュー シリーズ記事で圧倒的な反響をいただいており、コメント、個人メール アドレスなどの形での「いいね!」やフィードバックにより、次の記事に進むことができます。記事。

これは、linux-console.net ですでに公開されているインタビュー シリーズ記事へのリンクです。そこでは、FTP、MySQL、Apache、スクリプト、Linux コマンドなど、多くのトピックが取り上げられています。

上記のシリーズに引き続き、ここではさらに 5 つの素晴らしい Linux インタビューの質問とその回答を紹介します。これを成功させるには、皆さん (linux-console.net の読者および頻繁に訪問するユーザー) のサポートが常に必要です。

1. 現在の日付、時刻、ユーザー名、および現在の作業ディレクトリを取得するシェル スクリプトを作成します。

次に、「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 is Sat Jun  7 13:05:29 IST 2014 
User is avi      pts/0        2014-06-07 11:59 (:0) 
Current directory /home/avi/Desktop
2. コマンドライン引数として 2 つの数値が指定された場合に追加するシェル スクリプトを作成します。2 つの数値が入力されていない場合は、1 行の使用方法の説明とともにエラー メッセージが出力されます。

再度、「two-numbers.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 ”

    exit 1 
    # 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

条件 1: コマンド ライン引数として 2 つの数字を入力せずにスクリプトを実行すると、次の出力が得られます。

サンプル出力
./two-numbers.sh

Usage - ./two-numbers.sh   x    y 
        Where x and y are two nos for which I will print sum

条件 2: コマンド ライン引数として数値を入力すると、次のような結果が得られます。

./two-numbers.sh 4 5 

Sum of 4 and 5 is 9

したがって、上記のシェルスクリプトは、質問で示唆されている条件を満たしています。

3. コマンド ライン引数のみを使用して入力が提供されるように、シェル スクリプトを使用して、指定された番号 (10572) を逆の順序で出力する必要があります。入力データがコマンド ライン引数として提供されていない場合は、エラーがスローされ、スクリプトの使用方法が提案されます。スクリプトを書きますが、その前に、ここで実装する必要があるアルゴリズムを教えてください。

アルゴリズム

  1. 1. 入力番号=n とします。
  2. 2. rev=0、sd=0 に設定します (反転および 1 桁を 0 に設定)
  3. 3. n % 10、左端の数字を 1 つ検索して返します。
  4. 4. 逆数は rev * 10 + sd として生成されます。
  5. 5. 入力番号 (n) を 1 減らします。
  6. 6. n > 0 の場合はステップ 3 に進み、そうでない場合は setp 7 に進みます。
  7. 7. 印刷版の改訂

ここでも、「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" 
    exit 1 
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

条件 1: コマンド ライン引数として入力が指定されていない場合、次の出力が得られます。

サンプル出力
./numbers.sh

Usage: ./numbers.sh  number 
       I will find reverse of given number 
       For eg. ./2.sh 123, I will print 321

条件 2: 入力がコマンド ライン引数として指定された場合。

./numbers.sh 10572 

Reverse number is 27501

上記のスクリプトは完全に機能し、出力はまさに必要なものでした。

4. シェルスクリプトではなく、ターミナルから直接実数計算を行う必要があります。あなたはどうしますか (実数が 7.56 と 2.453 だとします)?

たとえば、次のコマンドを実行すると、示されているように bc コマンドを使用して数値をリアルタイムで計算できます。

echo 7.56 + 2.453 | bc

10.013
5. 小数点以下 100 桁までの pi の値を求めることになっていますが、結果を得る最も簡単な方法は何ですか。
pi 100 

3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067

明らかに!パッケージ「pi」をインストールする必要があります。 apt または yum を実行して、使用しているディストリビューションに ‘pi‘ をインストールするために必要なパッケージを取得するだけです。

それは今のところすべてです。近いうちにまた別の興味深い記事をお届けする予定です。それまでは、linux-console.net に接続してお待ちください。以下のコメントセクションに貴重なフィードバックをお寄せください。