効果的な販売スクリプトを作成するにはどうすればよいですか? ユーザースクリプトの書き方を学ぶ スクリプトの作り方

23.06.2021

初心者なら誰でも システム管理者 Linux は遅かれ早かれ次のような概念に遭遇します。 スクリプト」のようなブート スクリプトの 1 つであっても、 /etc/rc.d/rcまたはソフトウェア開発者が作成した構成スクリプト 構成する。 この記事では、スクリプトを次のように記述することを示します。 シェルこれは特別なことではなく、Linux の世界の初心者でも十分に実行可能です。

まずは英語の用語の背後に何が隠されているかを見てみましょう。 シェルそして スクリプト. シェル、またはシェルは、この用語が時々翻訳されるように、コマンドインタープリタ、つまりユーザーとオペレーティングシステム、そのカーネルの間のインターフェイスです。 しかし、それ以上に、強力なプログラミングおよびスクリプト言語でもあります。 独自のファンクションワードと制御構造が含まれており、その上にプログラムを作成できます。 このスクリプト言語プログラムは次のように呼ばれます。 スクリプト、システムコールとコマンドを組み合わせることができます オペレーティング·システム、外部ユーティリティと同様に、 強力なツールシステム管理用。

システム管理のタスクの 1 つは、 バックアップ 重要な情報。 そこで、バックアップ情報を実装するスクリプトの例を見てみましょう。

始まりが始まった

したがって、まずスクリプトの構造を理解する必要があります。 何も複雑なことではありません。 一般的に、最も単純なスクリプトは単なる列挙です。 システムコマンド。 例えば:

エコー これはほんの一例です
おいおい
うなめ -a

これらのコマンドは 1 つのファイルにまとめられています。 ただし、シェルは、このファイルの内容を読み取るだけでなく、このファイルを処理する必要があることを認識している必要があります。 これには特別な構造があります: #!

このデザインは「」と呼ばれています シャバン」 実際には # でコメントを指定しますが、 この場合 t sha-bang は、その後にスクリプト ハンドラーへのパスが続くことを意味します。 例えば:

#!/bin/bash
#!/bin/sh
#!/usr/bin/perl

私たちは Bash, Bourne-Again シェルに固執します。 このシェルは、ほとんどすべての Linux システムにデフォルトでインストールされ、/bin/sh はそれにリンクします。 スクリプトの終了はサービスワード exit によって示されます。

この知識を踏まえて、最初のスクリプトを作成してみましょう。

#!/bin/bash
echo シンプルなスクリプト # echo コマンドは画面にメッセージを出力します
あなたにエコー:
whoami #whoami は登録ユーザーの名前を表示します
echo システムが起動しました
uptime # uptime はマシンの電源が入った時間を示します
今日のエコー
date # date は現在の日付と時刻を示します
エコー今のところはここまでです
出口

このファイルを tutor1.sh という名前で保存しましょう。 コマンドを実行してスクリプトを実行可能にしてみましょう。

Chmod +rx tutor1.sh

スクリプトの実行結果は次のようになります。

Voland@superstar:~/Doc/Open Source$ ./tutor1.sh
シンプルなスクリプト
あなた:
ヴォランド
システムが起動しました
14:38:46 アップ 1:48、2 ユーザー、負荷平均: 0.47、0.43、0.41
今日
2 月 26 日 (日) 14:38:46 MSK 2006
今のところはここまでです

もっと深刻な話に移りましょう。

基本的なスクリプトの作成方法を学習したので、今度はバックアップ スクリプトの作成という本格的な作業に移ります。

まず第一に、次のことを決定する必要があります - バックアップコピー私たちは何をするつもりですか? したがって、スクリプトはコマンド ラインで動作できる必要があります。 引数 コマンドラインスクリプト名の後にスペースで区切って指定します: somescript arg1 arg2 arg3。 スクリプトは引数をシーケンス番号によって認識するため、$argument_number 形式の構造を使用します。 1ドル、2ドル、3ドル。 $ は、変数を操作するときにも必要となるワイルドカード文字です。 スクリプト内の変数は、変数名=値の形式で指定します。 変数 MAXPARAMS を使用してコマンド ライン パラメーターの最大数を定義し、BACKUPFILE を使用してアーカイブの名前を設定し、BACKUPDIR をバックアップするフォルダーに、ARCHIVEDIR をアーカイブを配置するフォルダーに使用します。 スクリプトの最も重要な部分は、見つかったすべてのファイルとフォルダーを検索し、指定したフォルダーにアーカイブするコマンドです。

探す。 -type f -print0 | xargs -0 tar rvf "$archive.tar" > /dev/null
gzip $archive.tar

これらのコマンドが何をするのか見てみましょう。 find は、現在のディレクトリ (最初の引数 "." で示されます) ですべてのファイルを検索し、それらのファイルへのフル パス (print0) を返します。 これらのパスはリダイレクトされます tarコマンド、すべてのファイルを 1 つにまとめます。 次に、gzip コマンドを使用して、結果の tar ファイルをアーカイブします。 チーム > /dev/nullアーカイブしておくと便利です 多数のファイル。 この場合、それらの名前とそれらへのフルパスはコンソールに表示されません。

次のステップでは、ユーザーが間違いを犯した場合に、スクリプトの使用方法に関するヒントを提供します。

例えばこんなデザイン

If [ $# -lt "$MAXPARAMS" ];
それから
エコー

エコー
0番出口
フィ

ユーザーが十分なコマンドライン引数を指定していないことを示します。 If [条件]...fi条件付き構造を指定します。 $# -lt "$MAXPARAMS"入力されたパラメータの数をチェックし、この数が MAXPARAMS より小さい場合、ユーザーは入力が間違っていることを示すメッセージを受け取ります。 Exit 0 を指定すると、スクリプトはエラー コードを指定せずに終了します。 パラメータの許容数の超過も同様の方法でチェックされますが、ls (より小さい - より小さい) の代わりに、gt (より大きい - より大きい) を指定する必要があります。 スクリプトの主要なポイントが説明されたので、完全版に進むことができます。

#!/bin/bash
# 説明:
#+ 指定されたディレクトリ内のすべてのファイルのバックアップ コピーを作成します
「tarball」内の #+ (tar.gz アーカイブ)。
#+ 使用法:
#+ sh backup.sh archive_name ソース フォルダー 宛先フォルダー
#+

# コマンドラインパラメータの最大数
MAXPARAMS=3

if [ $# -lt "$MAXPARAMS" ];
それから
エコー
echo "使用法: sh `basename $0` archive_name ソース フォルダー 宛先フォルダー"
エコー
0番出口
フィ

if [ $# -gt "$MAXPARAMS" ];
それから
エコー
echo "このスクリプトには $MAXPARAMS コマンド ライン引数のみが必要です!"
エコー
0番出口
フィ

# スクリプトで使用する変数
BACKUPFILE=$1-バックアップ-$(日付 +%m-%d-%Y)
アーカイブ=$BACKUPFILE
BACKUPDIR=$2
アーカイブディレクトリ=$3

# 移動元フォルダと移動先フォルダがあるか確認する
もし [! -e $BACKUPDIR ];
それから
エコー
echo "\"$BACKUPDIR\" は存在しません!"
エコー
0番出口
フィ

もし [! -e $ARCHIVEDIR ];
それから
エコー
echo "\"$ARCHIVEDIR\" が存在しません、作成しています..."
mkdir $ARCHIVEDIR
「完了しました」とエコーします。
フィ

# ソースと宛先にアーカイブがあるかどうかを確認します。
cd $アーカイブディレクトリ
if [ -e $archive.tar.gz ];
次に rm $archive.tar.gz
フィ

cd $BACKUPDIR
if [ -e $archive.tar.gz ];
次に rm $archive.tar.gz
フィ

# スクリプトの主要部分...
echo "\"$BACKUPDIR\" のバックアップ コピーをファイル \"$archive.tar.gz\" に作成しています..."
探す 。 -type f -print0 | xargs -0 tar rvf "$archive.tar" > /dev/null
gzip $archive.tar
echo "\"$BACKUPDIR\" はファイル \"$archive.tar.gz\" に正常にアーカイブされました。」

# アーカイブを ARCHIVEDIR フォルダーに移動します
echo "アーカイブ \"$archive.tar.gz\" をフォルダー \"$ARCHIVEDIR\" に移動します。"
mv $archive.tar.gz $ARCHIVEDIR/$archive.tar.gz
「完了しました」とエコーします。

主要な点について十分に詳細にコメントできたと思います。 ご質問がございましたら、下記までご連絡ください。 [メールで保護されています]また、Mendel Cooper 著の素晴らしい本『Advanced Bash-Scripting Guide』もお勧めします。この本は、スクリプトに慣れ始めたばかりのときに非常に役立ちました。 楽しいプログラミング。

追伸 mar さんのコメントとアドバイスに感謝します。

現代のインターネットはスクリプトなしでは考えられません。 JavaScript での記述を学習します。

もし聖書がインターネット用に書かれたとしたら、次のように始まるでしょう。

まずメールが来ました。 そしてエンジニアたちはこれが良いことに気づきました。 そしてハイパーリンクを備えた WWW を作成しました。 そしてエンジニアたちは、これも良いことだと気づきました。 そして、ページに命を吹き込むための JavaScript 言語を作成しました。

おおよそこれが現実に起こったことです。 JavaScript「生き返らせる」ために発明された HTML。 スクリプト JavaScriptテキストに直接書かれている HTMLまたはスタイルなどの別のファイルに保存されます CSS。 これらは、ページがブラウザに読み込まれた直後に実行されます。

言語自体も最初はこう呼ばれていました ライブスクリプト。 その後、に名前が変更されました JavaScriptというのは、何らかの方法で汎用 Java 言語とリンクさせることを計画していたからです。 しかし、今では彼らに共通点はほとんどなく、 JavaScript- 独自の明確な仕様 ECMAScript を備えた完全に独立したプログラミング言語。

正式には、JavaScript は Oracle の商標であり、この言語は Microsoft の JScript および ActionScript とともに ECMAScript の「拡張機能」ですが、これは所有者にとってむしろ懸念事項です。 ブランド。 重要なことは、無料の ECMAScript は誰にも属さないということです。

時間の経過とともに、影響範囲 JavaScript大幅に拡大しました。 彼らはページ上のスクリプトだけでなくそれを使い始めました HTMLだけでなく、本格的な大規模な Web アプリケーションやブラウザーで実行されるプログラム全体にも適用されます。 これらのプログラムを特別な方法で「パッケージ化」し、ブラウザとは別に実行するツールがあります。 これらはコンパイラとインタプリタであり、トレーニング コース「」および「」で詳しく説明します。

JavaScript アプリケーションは、適切なインタープリターが存在するあらゆる環境で実行されます。

現時点では、ブラウザと HTML ページのみに注目します。

やり方 JavaScript? 基本的なスクリプトを書くことは、単純なスクリプトを書くことと同じくらい難しいことではありません。 HTML- ページ、スクリプトのため JavaScriptプレーンテキストで書かれています。つまり、文字通り同じメモ帳で作成し、別のファイルに保存するか、本文に貼り付けることができます。 HTML-書類。 最も単純なこと JavaScriptとても簡単にできます。

JavaScript の書き方

たとえば、サーバーによって実行される簡単なスクリプトを作成してみましょう。 Windows スクリプト。 このスクリプトはメモ帳で直接記述し、ブラウザなしで実行できます。

Wスクリプト。 エコー(" こんにちは、スキルボックスです!")

このテキストを書くのは、 「メモ帳」、次の名前でファイルを保存します。 スキルボックス.jsそして走り込みます "エクスプローラ"ウィンドウズ。

同様のスクリプトをページコードに直接記述することができます。 HTMLタグ間 そして . そこではすでに通常のを使用できます JavaScript メソッド、メソッドではありません エコー特定のオブジェクト Wスクリプト。 ブラウザーでデータを入出力するための標準的な方法をいくつか見てみましょう。

アラート()

方法 アラート()「OK」ボタンのあるウィンドウが表示されます。 ウィンドウには括弧内に示されたメッセージが表示されます。 例えば、 「こんにちは、スキルボックス!」。 つまり、この場合、ブラウザはスクリプト サーバーが以前に実行したのとまったく同じことを実行します。 .

これらの例はメモ帳で作成することもでき、拡張子が付いているファイルに保存するだけです。 HTML。 例えば、 スキルボックス.htm.



アラート(" こんにちはスキルボックス")

結果:

議論として アラート()特定のテキストだけでなく、他のデータの計算や処理の結果も指定できます。 例えば、 アラート(x)ここで、x は個別に計算されます。

確認する()

方法 確認する()同じウィンドウにメッセージが表示されますが、「OK」と「キャンセル」という 2 つのボタンがあります。 ユーザーがどのボタンをクリックしたかに応じて、メソッドは次のいずれかを返します。 真実、 または 間違い。 サーバーはユーザーからこの戻り値を受け取り、応答に応じて何らかのアクションを実行します。

構文は同じですが、ここでは選択が論理的に想定されるため、ユーザーに質問が表示される点のみが異なります。



確認する(" こんにちはスキルボックス")

結果:

プロンプト()

方法 プロンプト()メッセージと、ユーザーがデータを入力するテキスト フィールドを含むダイアログ ボックスを表示します。 「OK」と「キャンセル」の2つのボタンもあります。 最初のボタンが押されると、メソッドは入力されたテキストをサーバーに返し、2 番目のボタンが押されると、ブール値を返します。 間違い.

ここでの構文は次のとおりです。

プロンプト( メッセージ、data_input_field_value)

入力フィールドの値はオプションです。 ユーザーの便宜のために、最初にフィールドに入力されたテキストをそこに入力できます。



プロンプト(" スキルボックスに挨拶しましょう", "こんにちは")

結果:

現代の可能性 JavaScriptフォームを介した原始的なデータ入出力をはるかに超えています。 これらの方法は最も効果的な方法としてのみ紹介しました。 簡単な例。 これ以外にも、 JavaScriptユーザーのアクションに応答できるようになります。 たとえば、マウスの動きや特定のキーの押下などです。 JavaScript非同期操作を提供するためによく使用されます ( テクノロジー アヤックス) ページ上の情報がリロードせずに更新された場合。 このモードでは、データがサーバーに送信され、そこから対話的にダウンロードされます。 その上、 JavaScript操作できる HTML- ページ上の要素 (タグの作成と非表示など) のほか、さらに多くのことを実行します。

便利なツール 開発者コンソール

一般的なブラウザにはすべて、特別な開発者コンソールがあります。 ページ上のスクリプト コードが表示され、別のスクリプト コードも表示されます。 役立つ情報。 で Chrome、Firefoxそして I.E.クリックすると開発者コンソールが開きます ホットキー F12、V Safari - Ctrl+Shift+Iまたは Ctrl+Alt+C。スクリーンショットでは、スクリプトは Web ページの他の要素とともに右上に表示されています。

Chrome 開発者コンソール。

コードエディタ

将来的には、プログラミングを便利にするために、コード エディターをインストールするか、 IDE(統合開発環境)、統合開発環境。 IDE他のエディタと統合された高度な機能を備えたエディタです。 便利なツール、接続をサポート 追加モジュール等々。

説明書

スクリプトは実行される場所に応じて「クライアント」と「サーバー」に分けられます。 ネットワーク上の特定のアドレスにアクセスすると、サーバーに目的のページの URL が送信され、サーバーは指定されたアドレスにあるスクリプトを実行します。 スクリプトは、サーバー上でプログラムされたアクションを実行し、必要なブロックからページを組み立ててブラウザに送信します。 これはサーバースクリプトです。 ページを受信すると、ブラウザはそれをレンダリングします。受信したページ コードに何らかのスクリプトが含まれている場合、ブラウザはすでにそのスクリプトを実行しています。 これはクライアント スクリプトです。
サーバーまたはブラウザがスクリプトを読み取り、理解して実行するには、既知のルールに従ってスクリプトをコンパイルし、記述する必要があります。 このような一連のルールは、スクリプト プログラミング言語と呼ばれます。 現在のほとんどのサーバー スクリプトは次のように書かれています。 PHP言語、ほとんどのクライアントのものはオンになっています JavaScript。 スクリプトを書くには、通常のスクリプトがあれば十分です。 テキストエディタ- ノート。 ただし、スクリプトを継続的にプログラミングするには、専用のエディターが必要です。 そんな編集者が自ら挑戦する ライオンの分け前スクリプトを書くという日常的な作業が軽減され、プログラマーは創造性のためにより多くの時間を確保できます。
サーバーサイド PHP で簡単なスクリプトを書いてみましょう。 最初の行は、スクリプトがこの時点から始まることを出演者に通知する必要があります。 PHP では、この開始タグは次のようになります。 これら 2 つのタグの間には言語命令があります。 たとえば、O. ベンダーがコーカサスの岩に残した碑文を次のように印刷します。 echo (「Kisya と Osya were here」) そして、現在時刻を HOUR:MINUTE 形式で表示する指示は次のように記述されます。 ("H:i"); Complete これらの演算子で構成される PHP スクリプトは次のようになります。 このスクリプトをサーバー実行プログラム (言語インタープリター) で実行すると、ページは次のようになります。

また、クライアント JavaScript の同じスクリプトは次のようになります。 var now = new date();
document.write("In");
document.write(now.getHours() + ":" + now.getMinutes());
document.write ("Kisya and Osya were here!"); ここで、行 var now = new date() は、現在の日付と時刻を表す「now」という新しい仮想オブジェクトを作成するようにスクリプト実行プログラムに命令します。 document.write() は括弧内の指定内容をページに書き込むコマンドで、now.getHours() と now.getMinutes() のコマンドは「now」オブジェクトから現在の時と分を取得するよう指示しています。
わかりやすくするために、残っているのは、これら 2 つのスクリプトを 1 つのファイルに結合し、サーバーに保存して、URL を入力することだけです。 アドレスバーブラウザ。 その結果、同一の行が表示されます。そのうちの 1 つはサーバー上のスクリプトに従って (PHP インタープリターによって) 実行され、もう 1 つはコンピューター上で (JavaScript インタープリターによって) 実行されました。

Web プログラマーの初心者の多くは、書籍を通じてこの言語に精通します。 この本は間違いなく非常に重要で必要なものですが、スクリプトの安定性と移植性の観点から本質的に正しくない例を (初心者向けに) 提供しています。 安定性とは、移植性によってさまざまな種類のエラーが発生する可能性を意味します。これは同じことですが、スクリプトを自宅のローカル マシンからホスティング プロバイダーのサーバーに転送するときに発生します。

以下では、初心者の Web 開発者に、後で不要な問題が発生したり、どこからともなく表示されるエラーを「キャッチ」したりしないように、すぐにスクリプトの書き方を学ぶ方法を説明したいと思います。

すぐに言っておきますが、私自身もこれに遭遇したので、このすべてが私の苦痛を経験しました…。

以下の点を考慮してみます。


2.「@」はどこに埋められていますか?
3. register_globals = オフ、それ以外は何もありません。
4. 構文の基本的な側面。 文字通りか文字通りではないか...

1. ローカル マシンとサーバー上で PHP をセットアップします。

なぜこの章から始めるのですか? 実際、多くの人はローカル マシン上のすべてのエラーの表示をすぐに無効にします。 これは正しくありません。 モニターをぼんやり見つめてセミコロンが欠けている箇所を探す代わりに、PHP によって生成されたエラーに基づいて何が起こっているのかをすぐに理解できます。

ただし、最初に、Apache モジュールや高速 CGI などの PHP の構成方法について少し脱線したいと思います。
ほとんど 最良の選択肢– Web サーバーモジュールとして設定します。 これを行うには、Apache Web サーバーの httpd.conf 構成ファイルに次の行を記述します。

LoadModule php4_module D:/bin/php/sapi/php4apache2.dll AddType application/x-httpd-php .php .phtml .php4 .php

FastCGIとの違いは以下の通りです。 初め。 FastCGI では、php.ini はスクリプトの起動時にほぼ 2 回ごとに Web サーバーのメモリにロードされます。Apache モジュールとしてインストールされている場合、PHP 設定は Web サーバーがロードまたは再起動されたときにのみロードされます。パフォーマンスとサーバーの負荷が軽減されます。 さらに、fastCGI としてインストールされている場合、特定の機能は使用できません。 初心者プログラマーにはこれらは必要ありませんが、大規模なインターネット アプリケーションを開発する場合には問題が発生する可能性があります。 トラブルは予防した方が良いですよ。

次に、PHP 自体の構成に移りましょう。 php.ini 設定ファイルでは、以下に記述された値を使用して次のディレクティブを設定する必要があります。

error_reporting = E_ALL display_errors = オン display_startup_errors = オン

エラーをログ ファイルに書き込むかどうかは、ユーザーの判断に任されています。
ホスティング会社のサーバーでは、セキュリティ上の理由からこれらのディレクティブをすべてオフにして、潜在的な攻撃者がスクリプトが置かれているパスを見つけられないようにしてください。 ただし、すでにスクリプトを公開している場合は問題ありません。 グローバルネットワーク、エラーはスローされないはずです。
このほかにも

short_open_tag = Off 使用を禁止するには