bashでのプログラミング-パート2

第二部 これの ミニチュートリアル プログラミング Bash、使用方法を学ぶ場所 サイクル および私たちの機能を改善するのに役立つ他のツール スクリプト.

条件付きの場合

Ifの機能は、フィルターを適用し、適用されたフィルターのタイプごとに操作またはタスクを実行することです。 その構造は次のとおりです。

[条件]の場合; 次に、elifコマンド[条件]; その後、elseコマンド。 fiコマンド

それぞれのセクションのForループの横に例が示されています。

サイクル

1. While:条件が真である限り、doとdoneの間に指定されたすべてのコマンドを実行します。 比較演算子を渡す場合は、式を角かっこで囲む必要があります。

CONDITION / COMMANDがコマンドを実行している間

例:数の九九

#!/ bin / bash X = 1 echo "数値を入力し、Enterキーを押します" read M#ループはXが10以下であることを制御しますが[$ X –le 10] do#Rには次の乗算を格納しますX by MR = $ [X * M]#この乗算は画面に出力されますecho "$ M * $ X = $ R" #letを使用して、Xの値を1単位増やしますlet X = $ X + 1 done

2. For:要素のリストを変数に格納します。これは、各サイクルで特定の操作を実行するために使用されます。

ELEMENTSのVARIABLEの場合、コマンドを実行します

例:あるフォルダから別のフォルダにファイルをコピーし、古いファイルを置き換えるプログラム。

#/ bin / bash#ソースディレクトリと宛先ディレクトリを確立しますORIGIN = / home / user / Downloads DESTINATION = / home / user / Documents#ソースに自分自身を配置しますcd $ ORIGIN#すべてのファイルのうち、必要なのは次のファイルのみです。は#ファイルのファイルを呼び出す* do ARCH-DESTINATION = "$ DESTINATION / $ FILE"#-fは、ディレクトリが私たちにとって何の役にも立たないため、通常のファイルをフィルタリングします。 –ntは、[-f $ FILE] && [$ FILE –nt $ ARCH-DESTINATION]の場合、宛先フォルダーで見つかったファイルよりも「新しい」ファイルを#除外します。 次にecho "Copying $ FILE ..."#cpでファイルをコピーしますcp $ FILE $ ARCH-DESTINATION fi done#cdを実行してソースフォルダを終了しますcd

別の例:ユーザーがコンピューターによって生成された乱数を推測する必要があるスクリプト。

#/ bin / bash#乱数は1から10まで生成され、#ランダムに保存されますRANDOM = $ [$ RANDOM%10 + 1] while [1] do echo –n "Enter a number:" read NUM#ユーザーが選択した数が#equaltoRANDOMであるかどうかを比較します。 [“ $ NUM –eq“ $ RANDOM”]の場合、変数の名前ではなく、変数の#valuesを評価するために$を使用することを忘れないでください。 次に、「正解です!」とエコーします。 #breakは、break中にループを終了することを許可します。#数値がRANDOMよりも小さい場合elif [“ $ NUM –gt“ $ RANDOM”]; 次にecho "それは少ない" "そうでない場合はランダムよりも大きいelseecho"は大きい "fi done

3. まで:構造がWhileと非常に似ていますが、条件の評価が負の場合は常にコードが実行されます。つまり、プログラムは「条件が発生するまで」実行を続けます。

CONDITION / COMMANDがコマンドを実行するまで

例:10〜20の数字を降順で出力します

#!/ bin / bash CONT = 20#カウンターが10未満(-lt、「より低い#than」)である限り、コードは[$ CONT -lt10]まで実行されます。 do echo "COUNTER $ CONT" #ACONTが単位で減算されますletCONT- = 1 done

4. 選択:この最後のサイクルは、メニューをすばやく作成するために一般的に使用されるため、特殊なケースです。 Forループと同様に機能します。

実行されたコマンドのリストでVARIABLEを選択します

例:ユーザーがスクリプトを続行または終了できるようにします。

#!/ bin / bash #itemは、#ユーザーが選択したものに応答する変数です。続行と終了は、ユーザーが使用できる#オプションですが、他のオプションを追加することもできます。#続行終了でアイテムを選択して、プログラムを終了します。休憩をとって、サイクルを終了します。 if [$ item = "Finish"]; その後、fiを壊します
フアン・カルロス・オルティス、ありがとう!

13コメント、あなたのコメントを残してください

コメントを残す

あなたのメールアドレスが公開されることはありません。 必須フィールドには付いています *

*

*

  1. データの責任者:MiguelÁngelGatón
  2. データの目的:SPAMの制御、コメント管理。
  3. 正当化:あなたの同意
  4. データの伝達:法的義務がある場合を除き、データが第三者に伝達されることはありません。
  5. データストレージ:Occentus Networks(EU)がホストするデータベース
  6. 権利:いつでも情報を制限、回復、削除できます。

  1.   中難易度

    私はこのようなものだと思います:tar -cf --Directory | (cd /その他/ディレクトリ; tar -xvf-)

    次に、/ other / directory / Directoryのようになります。
    そのようにして私はディレクトリを圧縮し、あなたはそれを別の場所で解凍します…。

  2.   ミゲル·アンヘル

    こんにちは、良いチュートリアルです。私はこのテーマについて学んでいて、すべてが順調です。私を助けるプログラムを作成できなかっただけです。あなたが私を助けてくれるかどうかを確認します。

    ソースファイルのリストをパラメータとして受け取るサイクルを実行する必要があります。このリストは名前(拡張子なし)のみを取得するため、サイクルは次のことを実行し、ディレクトリで受信した名前を探します(探しているもの)、ファイル(フルネームはすでに拡張子が付いています)と絶対パスを抽出してコピーし、別の宛先ファイルに作成します。

    これまでのところ、私は次のものを持っています:

    行を読みながら
    do
    echo -e "$ line"
    find / home / myuser / dof "$ line" -exec readlink -f {};
    done <testlist.txtこれまでのところ、ファイルのすべての行を読んでいますが、そのファイルを検索して情報を抽出することはできません。助けていただければ幸いです。 乾杯

  3.   パメラガラヴィス

    貢献していただきありがとうございます🙂

  4.   マリオハビエル

    こんにちは...次の練習でお役に立てば幸いです...既存のすべてのディレクトリとファイルのユーザーとグループを指定し、ファイルとディレクトリにアクセス許可を割り当てることに加えて、指定したディレクトリのtgzでファイルを解凍します
    注:ファイルは読み取りと書き込みの準備ができています
    ディレクトリ実行許可

  5.   ファンク

    ARCH-DESTINATIONは、宛先ファイルのパスを保存する変数であり、冗長性を許容します。 次に、この変数に、上記のDocumentsフォルダーへのパスを含む変数DESTINATIONを指定し、ファイルの名前を含む「変数」FILEを追加します。 そのファイルがたとえばlist.docの場合、変数ARCH-DESTINATIONは/home/Usuario/Documentos/listado.docに等しくなります。

  6.   Linuxを使いましょう

    前回の記事です。 あなたはそれをアクセスすることができます http://usemoslinux.blogspot.com

    抱擁! ポール。

  7.  

    おはようございます、ありがとうございます。ブログはとても良いですが、プログラミングの最初の部分をBashで取得できません。ありがとうございます。

  8.   齋藤モルドラグ

    XNUMXつの特別な部分、心からおめでとうございます。

    単に素晴らしい。

  9.   フレディ

    よく

  10.   ヒューゴー

    こんにちは、私はCASEを使用してプログラムを作成していますが、何をしたいのかわかりません。たとえば、次のようになります。

    echoオプションを選択します:
    echo
    エコー1。オプション1
    エコー2。オプション2
    エコー3。オプション3
    エコー4。オプション4
    エコー5。終了
    varを読む
    ケース "$ var" in
    1)
    echo "オプション1を選択しました"
    ;;
    2)
    echo "オプション2を選択しました"
    ;;
    3)
    捨てた "….."
    ;;
    4)
    捨てた "…。"
    ;;
    5)
    捨てた "…"

    ;;
    *)
    エコー「間違ったオプション」
    ;;
    ESAC

    方法がわからないのは、終了するオプション4を選択するときに、本当に終了するかどうかを尋ね、2つのオプションYとNを指定することです。

    もう1つは、5..XNUMXの数字以外を選択した場合、スクリプトから私に投票しないでください…。

    ありがとうございます。

  11.   ダパマ21

    こんにちは。1か月前にスクリプトを開始しました。スクリプトの投稿に感謝します。 私は約15-20をしているでしょう。 事前にどうもありがとうございました。 しかし今、私たちの先生は私たちに私が停滞している仕事を与えてくれました。 先生が尋ねるので:
    ディレクトリを渡し、そのディレクトリにあるすべてのファイルをアルファベット順にコピーし、file1file2などの名前を付けます...など...
    今、私は検索または検索の瞬間にいます。検索を使用したかったのですが、dev nullに通すようなエラーコードを指定すると、アクセス許可が拒否され、間違って検索を実行します。
    $ 1を探す| grep "/ $ {1} \ $"
    しかしもちろんこれでそれらはすべて出てきます...
    読んでくださってありがとうございます。
    あなたが私を助けることができればそれは大きな恩恵になるでしょう。

  12.   ルイス

    これを手伝ってほしい。
    1.-キーボードに整数を入力し、画面にその数を2倍と3倍に表示します。 XNUMX.-キーボードで入力した数字がXNUMXで割り切れるかどうかを判断するプログラムを作成します。
    3.-次の合計を見つけるプログラムを作成します:???????? + ???????? + ???????? + ???????? +⋯? ???????
    4.-合計1+ 3 + 5 + 7 + 9···+(2n + 1)を見つけるプログラムを作成します。
    5.-Linuxという単語を画面に10回出力するプログラムを作成します
    6.-ユーザーが指定した回数だけ画面にLinuxという単語を出力するプログラムを作成します。
    7.-量を時間で入力し、分と秒に変換します。
    8.-三角形の面積を計算します
    9.-キーボードで数字を入力します。2を入力すると、3乗、4立方、6からXNUMXなど、最大XNUMXになります。
    10-学生が支払わなければならない年金、専門コードを入力しなければならない、および延滞日数を計算します。
    コード
    専門

    XNUMX日あたり
    1
    コンピューティング
    160
    1
    2
    看護
    150
    1.5
    3
    秘書
    140
    2
    4
    TOURISM
    180
    2.5
    5
    会計
    160
    1
    あなたはあなたが勉強している専門分野、年金の費用、デフォルト、そして支払われるべき総額を示さなければなりません。

  13.   チャーリー

    こんにちは、誰かが私を助けることができますか?
    «キーボードでXNUMXつの単語をリクエストし、Aからzのアルファベット順に表示する»が必要です。
    LINUXporfaborrrrのBashまたはsh言語