目次
シェル スクリプトでの配列の使用" >シェル スクリプトでの配列の使用
实现命名参数支持" >实现命名参数支持
使用函数中的引用传递" >使用函数中的引用传递
使用类型和修饰符属性的变量" >使用类型和修饰符属性的变量
ホームページ システムチュートリアル Linux Linux におけるパッケージの依存関係を理解するための 1 つの記事

Linux におけるパッケージの依存関係を理解するための 1 つの記事

Feb 12, 2024 pm 09:18 PM
linux Linuxチュートリアル Linuxシステム Linuxコマンド シェルスクリプト キーと値のペア 埋め込みLinux Linux を始める Linux学習

これらのコーディングのヒントを使用して、高速で読みやすいシェル スクリプトを作成します。

Bash は間違いなく、あらゆる最新の Unix 系システムまたは Unix ベースのオペレーティング システムのネイティブ組み込み自動化ソリューションになりました。プログラマーは Bash を使用してシェル スクリプトを作成し、反復的なコマンドライン タスクを自動化します。 Bash の主な目的は、他のプログラムを実行し、その終了コードと出力を処理するための最小限の構文を提供することです。ただし、最新の Bash インタープリターには、ほとんどの汎用プログラミング言語の機能を提供する完全なコマンド言語があります。したがって、従来のコマンド ライン呼び出しとアルゴリズム コードを組み込むことで、可読性の高いシェル スクリプトを作成できます。 Bash の最新バージョンでは、連想配列や参照渡しのサポートなどのパフォーマンス関連の機能が導入され、Bash にシェル スクリプトの準備ができている他の言語と競合できる機能が与えられました。

この記事では、シェル スクリプトを現代的で高速で読みやすいものにするために、シェル スクリプトに組み込むことができる Bash コーディングのヒントをいくつか紹介します。これらのヒントを使用すると、Bash を使用して一般的なプログラミングやアルゴリズムの実装 (アルゴリズム プロトタイプ、実装ユーティリティ、さらには競技プログラミングなど) を作成できます。

シェル スクリプトでの配列の使用

従来の Bash 変数には通常、型がありませんが、特定の処理コンテキストに応じて、整数、小数、または文字列として処理できます。通常、コマンド出力、アルゴリズム パラメーター、その他の一時値を保存するために Bash 変数を使用します。 Bash は、1 次元 (数値インデックス) と結合 (キーと値の構造) という 2 つの配列タイプもサポートしています。 Python、PHP、JavaScript などの他の一般的な動的型付け汎用言語と同様、Bash 配列の操作は非常に簡単です。 Bash で配列を作成する方法は次のとおりです:

リーリー

上記のコードによって出力される配列の内容は次のとおりです:

一文了解什么是 Linux 上的包依赖

次のように、declare 組み込みコマンドを使用して、各配列参照の宣言を確認できます。

一文了解什么是 Linux 上的包依赖 Bash での配列宣言の確認 (作成者のスクリーンショット) 配列操作や、新しい項目の追加、既存の項目の削除、配列要素の処理、並べ替えなどの処理アクティビティに最小限の構文を使用することもできます。たとえば、次のコードは無効なスコア値を削除し、上位 3 つの最高スコアを出力します。 リーリー

上記のコードでは、sort 外部コマンドを使用しているため、並べ替えのための別のプロセスが生成されますが、Bash コードを使用して選択並べ替えなどの単純な並べ替えアルゴリズムを実装することで、これを回避できます。 一文了解什么是 Linux 上的包依赖

マップまたは辞書を作成する 一部のプログラミング シナリオでは、キーと値のペアのデータをシェル スクリプトに保存する必要があります。プログラマーは、多くの場合、キーと値のデータ構造を使用して、辞書構造、マッピング、キャッシュ コンテナー (メモ化経由) を作成します。 Python でシェル スクリプトを作成する場合、組み込みの辞書データ構造を使用してキーと値のデータを保存できます。 Bash で辞書構造を使用するにはどうすればよいですか?

Bash バージョン 4.0 では、キーと値のデータを格納するための連想配列関数が導入されました。 Bash 連想配列の簡単な例を次に示します:

リーリー

ここでは、!mapvar[@] 構文を使用して、すべての辞書キーを配列として抽出し、反復処理しています。上記のコードは、次のようにすべてのキーと対応する値を出力します。

Bash を使用すると、最小限の構文を使用して連想配列データを操作したりアクセスしたりできます。 Bash 連想配列の使用は、Python 辞書を使用するのと同じように機能します。以下の例を参照してください:

リーリー 一文了解什么是 Linux 上的包依赖上記のソース コードは、ユーザーに x 座標と y 座標を要求し、欠落している軸の値にデフォルト値を設定して、それらを端末に出力します。通常、Python 辞書では not in を使用するため、ここでは ! -v 構文を使用します。

实现命名参数支持

当您通过 Bash 解释器执行 shell 脚本时,操作系统会创建一个新的 Bash 进程,并将您的脚本文件作为第一个命令行参数。操作系统通常允许您将一系列参数传递给每个操作系统进程。当您为其他命令/进程提供命令行参数时,您也可以将它们传递到您的 Bash 脚本中。假设您需要将两个整数值传递给脚本。然后,您可以轻松使用 2 分别访问第一个和第二个参数值。但是,当您使用更多索引参数并且需要实现可选参数(也称为命令行标志或选项)时,事情将变得复杂。

作为这种情况的解决方案,您可以使用内置的 getopts 来使用命名参数。使用以下 shell 脚本,我们可以覆盖一些脚本中的默认值:

#!/bin/bash
#Linux迷 www.linuxmi.com

title="Linux迷 www.linuxmi.com"
message="Hello world!www.linuxmi.com  Linux迷"

while getopts ":t:m:" option; do
    echo $option
    case "${option}" in
        t)
            title=${OPTARG}
            ;;
        m)
            message=${OPTARG}
            ;;
    esac
done

zenity --info --title="$title" --text="$message"
ログイン後にコピー
一文了解什么是 Linux 上的包依赖

默认情况下,上面的脚本显示一个带有默认标题和消息的 GTK 消息框,但是您可以使用命名的命令行参数来覆盖它们,如下所示:

./linuxmi.com.sh -t "hello"

./linuxmi.com.sh -m "world"
ログイン後にコピー
一文了解什么是 Linux 上的包依赖

getopts 内置支持仅使用单个字母选项。您可以使用 getopt 来使用长形式选项(即–title),如此 gist 所示。

使用函数中的引用传递

引用传递是一种编程语言特性,它允许您通过内存引用将数据传递到函数中,而不是将整个数据段复制到新变量中。C ++ 程序员总是努力编写性能优先的代码,对于类对象,结构体和字符串,使用引用传递而不是值传递。

如果您使用的是 Bash 4.3 或更新版本,则可以使用名称引用在 shell 脚本中实现引用传递。以下是一个简单的示例代码片段,通过函数更改字符串变量:

#!/bin/bash
#Linux迷 www.linuxmi.com

function change_str_var() {
    local str_new="Bash"
    local -n str_ref=$1
    echo "$str_ref -> $str_new" # Python -> Bash
    str_ref=$str_new
}

str="Python"
change_str_var str
echo $str # Bash
ログイン後にコピー
一文了解什么是 Linux 上的包依赖

上述 change_str_var 函数使用 local 命令创建一个局部的 str_ref 引用,引用全局的 str 变量。然后,它通过覆盖旧字符串值来分配一个新的字符串值。

一些程序员在函数内部使用 echo 命令,并通过命令替换特性调用特定函数以从 Bash 函数返回值(因为原生 Bash return 关键字仅支持返回有效的退出代码)。这会生成另一个子 shell 并消耗更多资源。因此,现在程序员可以使用引用传递并编写性能优先的Bash函数返回,如果他们使用新的 Bash 版本。

使用类型和修饰符属性的变量

Bash 被称为一种无类型命令语言。换句话说,它通常将变量数据处理为字符串,但根据上下文(例如在算术扩展中)进行相应处理。另一方面,Bash 也允许程序员使用类型属性,并提供两种内置的数组类型。即使有了这些功能,我们也不能将 Bash 视为纯动态类型语言,但这些变量属性将Bash置于无类型和动态类型语言之间。

Bash 支持使用整数变量属性将特定变量标记为整数。一旦创建了一个整数变量,当您分配非整数值时,Bash 会发出警告,如下所示:

一文了解什么是 Linux 上的包依赖

Bash 还允许使用 declare -r 命令创建常量。每当您的脚本尝试更改常量时,Bash 会在屏幕上打印错误消息。此外,正如我们之前使用的那样,您可以使用 declare 内置函数创建数组。

Bash 还允许您为变量添加一些修饰符属性。例如,您可以创建仅包含小写字母或大写字母的字符串,如下所示:

declare -l lc_str="Hello World"
declare -u uc_str
uc_str="Hello"
uc_str="World"

echo $lc_str # hello world
echo $uc_str # WORLD
ログイン後にコピー
一文了解什么是 Linux 上的包依赖

使用 Bash 变量属性,您可以编写更少出错、更易读、更现代的 shell 脚本。

相关:Bash 特殊变量(?,#,@,$$,$*) 见 https://www.linuxmi.com/bash-special-variables.html

如果还有什么疑问与建议,请在评论栏里给我们留言。感谢您的阅读。

以上がLinux におけるパッケージの依存関係を理解するための 1 つの記事の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

VSCODEに必要なコンピューター構成 VSCODEに必要なコンピューター構成 Apr 15, 2025 pm 09:48 PM

VSコードシステムの要件:オペレーティングシステム:オペレーティングシステム:Windows 10以降、MACOS 10.12以上、Linux Distributionプロセッサ:最小1.6 GHz、推奨2.0 GHz以上のメモリ:最小512 MB、推奨4 GB以上のストレージスペース:最低250 MB以上:その他の要件を推奨:安定ネットワーク接続、XORG/WAYLAND(Linux)

VSCODEは拡張子をインストールできません VSCODEは拡張子をインストールできません Apr 15, 2025 pm 07:18 PM

VSコード拡張機能のインストールの理由は、ネットワークの不安定性、許可不足、システム互換性の問題、VSコードバージョンが古すぎる、ウイルス対策ソフトウェアまたはファイアウォール干渉です。ネットワーク接続、許可、ログファイル、およびコードの更新、セキュリティソフトウェアの無効化、およびコードまたはコンピューターの再起動を確認することにより、問題を徐々にトラブルシューティングと解決できます。

Apr 16, 2025 pm 07:39 PM

NotePadはJavaコードを直接実行することはできませんが、他のツールを使用することで実現できます。コマンドラインコンパイラ(Javac)を使用してByteCodeファイル(filename.class)を生成します。 Javaインタープリター(Java)を使用して、バイトコードを解釈し、コードを実行し、結果を出力します。

vscodeとは何ですか?vscodeとは何ですか? vscodeとは何ですか?vscodeとは何ですか? Apr 15, 2025 pm 06:45 PM

VSコードは、Microsoftが開発した無料のオープンソースクロスプラットフォームコードエディターと開発環境であるフルネームVisual Studioコードです。幅広いプログラミング言語をサポートし、構文の強調表示、コード自動完了、コードスニペット、および開発効率を向上させるスマートプロンプトを提供します。リッチな拡張エコシステムを通じて、ユーザーは、デバッガー、コードフォーマットツール、GIT統合など、特定のニーズや言語に拡張機能を追加できます。 VSコードには、コードのバグをすばやく見つけて解決するのに役立つ直感的なデバッガーも含まれています。

vscodeはMacに使用できますか vscodeはMacに使用できますか Apr 15, 2025 pm 07:36 PM

VSコードはMacで利用できます。強力な拡張機能、GIT統合、ターミナル、デバッガーがあり、豊富なセットアップオプションも提供しています。ただし、特に大規模なプロジェクトまたは非常に専門的な開発の場合、コードと機能的な制限がある場合があります。

vscodeの使用方法 vscodeの使用方法 Apr 15, 2025 pm 11:21 PM

Visual Studio Code(VSCODE)は、Microsoftが開発したクロスプラットフォーム、オープンソース、および無料のコードエディターです。軽量、スケーラビリティ、および幅広いプログラミング言語のサポートで知られています。 VSCODEをインストールするには、公式Webサイトにアクセスして、インストーラーをダウンロードして実行してください。 VSCODEを使用する場合、新しいプロジェクトを作成し、コードを編集し、コードをデバッグし、プロジェクトをナビゲートし、VSCODEを展開し、設定を管理できます。 VSCODEは、Windows、MacOS、Linuxで利用でき、複数のプログラミング言語をサポートし、マーケットプレイスを通じてさまざまな拡張機能を提供します。その利点には、軽量、スケーラビリティ、広範な言語サポート、豊富な機能とバージョンが含まれます

Linuxの主な目的は何ですか? Linuxの主な目的は何ですか? Apr 16, 2025 am 12:19 AM

Linuxの主な用途には、1。Serverオペレーティングシステム、2。EmbeddedSystem、3。Desktopオペレーティングシステム、4。開発およびテスト環境。 Linuxはこれらの分野で優れており、安定性、セキュリティ、効率的な開発ツールを提供します。

GITの倉庫アドレスを確認する方法 GITの倉庫アドレスを確認する方法 Apr 17, 2025 pm 01:54 PM

gitリポジトリアドレスを表示するには、次の手順を実行します。1。コマンドラインを開き、リポジトリディレクトリに移動します。 2。「git remote -v」コマンドを実行します。 3.出力と対応するアドレスでリポジトリ名を表示します。

See all articles