ホームページ 運用・保守 Linuxの運用と保守 基本的なシェル構文の紹介と使用

基本的なシェル構文の紹介と使用

Jun 20, 2017 am 11:24 AM
shell 基本 文法

1. 変数

1. 変数の命名規則: 文字またはアンダースコアで始まり、その後に数字、文字、またはアンダースコアが続きます。ただし、変数名を見たときにその意味が推測できるようにすることをお勧めします。

2. 変数の割り当て echo ${egon_salary}yuan

20000yuan

4. bash でデータ型を宣言する必要はありません。デフォルトは文字型

2 です。算術演算子: + - * / %

[root@bogon ~]# echo $[5%2]

1

2. 代入演算子: =、+=、-=、*=、/=、%=

[root@bogon ~] # x=10

[root@bogon ~]# ((x+=1))

[root@bogon ~]# echo $x

11

3. 関係演算子: <,>,!=,== ,>=,<= ,||,&&


関係演算子は、(( ))、[] とともによく使用されますが、同じ結果を得ることができますが、(( )) はファイルのタイプを決定できません。 []、[] を使用してファイルの種類を決定します。結果は、$? を使用してコマンドの実行結果を確認します。0 以外の場合は false を意味します。

[root@bogon ~]# x=10

[root@bogon ~]# ((x> =8))

[root@bogon ~]# echo $?
0

4. シェル内の計算機

$[] を使用して簡単な操作を実行できると前に言いましたが、10 進数の操作が含まれる場合は、シェルで電卓を使用する必要があります

まず、ソフトウェアをインストールする必要があります。yum install -y bc

[ root@bogon ~]# res=$(echo 'scale=2;1/3' |bc -l |cut -d'.' -f2)

[root@bogon ~]# echo ${res}%

33 %

5.test コマンド test

test

-n str 文字列の長さはゼロではありません

- z str 文字列の長さはゼロです

-b ファイルが存在し、ブロック ファイルです


-d ファイルが存在し、ディレクトリファイル

-e ファイルが存在し、通常のファイルです

-f ファイルが存在し、通常のファイルです

リンクファイルの場合(-L と同じ)

-s ファイルが存在し、0 バイトより大きいです

比較ファイル間

file1 -nt file2 file1の作成時刻はfile2より遅い

file1 -ot file2 file1の作成時刻はfile2より遅い

整数の比較

int1 -ne int2 int1とint2は等しくない

int1 -eq int2 int1とint2は等しい

int1 -lt int2 int1はint2より小さい

int1 -le int2 int1はint2以下

int1 -gt int2 int1はint2より大きい

int1 -ge int2 int1はint2以上

文字列の比較

str1 = str2 str1とstr2は等しい

str1! =str2 str1 と str2 は等しくありません

式間の比較

式1 -a 式2 式1と式2は両方とも真です

式1 -o 式2 式1または式2は真です

テスト例

6. test:

[root@bogon ~]# [[ 2 > 1 ]][root@bogon ~]# echo $?0
[root@bogon ~]# ((20>10))[root@bogon ~]# echo $?0
[root@bogon ~]# ((20<10))[root@bogon ~]# echo $?1
ログイン後にコピー

文字列テスト

[root@bogon ~]# [ "abc" = "abc" ][root@bogon ~]# echo $?0
[root@bogon ~]# [[ "abc" = "abc" ]][root@bogon ~]# echo $?0
[root@bogon ~]# (("abc" = "abc"))[root@bogon ~]# echo $?1
ログイン後にコピー

[root@bogon ~]# [[ a = a && 1 < 2 ]][root@bogon ~]# echo $?0
[root@bogon ~]# [[ a = a && 1 < 2 ]][root@bogon ~]# echo $?0
ログイン後にコピー

[root@bogon ~]# (( a = a || 1 > 2 ))[root@bogon ~]# echo $?1[root@bogon ~]# [[ a = a || 1 > 2 ]][root@bogon ~]# echo $?0
ログイン後にコピー

単純に数値を比較するには、(( ))を使用します

純粋な数値以外の比較には、[[ ] ]

3を使用します。プロセス制御

1.if ブランチ

1) ユーザーアカウントパスワードの確認:

input your name : zhangcan
input password : 123login successful
[root@bogon ~]# ./usertest.sh input your name : hha
input password : hag
user or password error
ログイン後にコピー

#! /bin/bashuser='zhangcan'password='123'read -p 'input your name : ' name
read -p 'input password : ' codeif [ $name = $user -a $code = $password ];then
        echo 'login successful'elseecho 'user or password error'fi~
ログイン後にコピー

2) 学年の決定

#!/bin/bash #根据用户输入的成绩,判断所属档次,并输出给用户read -p 'input your score : ' scoreif  [ $score -ge 90 ];then
    echo '优秀'elif [ $score -ge 70 -a $score -lt 90 ];then
    echo '良好'elif [ $score -ge 60 -a $score -lt 70 ];then
    echo '及格'elif [ $score -lt 60 ];then
    echo '较差'fi
ログイン後にコピー

2.whileその間(条件)

do

Command
done
例: ユーザーが入力するファイルの種類を決定します

#!/bin/bashwhile :
do
    read -p 'input your file : ' fileif [ -z $file ];thencontinueelsebreakfi
doneif [ -f $file ];then
    echo "$file is regular file"elif [ -b $file ];then
    echo "$file is block file"elif [ -d $file ];then
    echo "$file is directory file"elseecho "$file type unkonw"fi
ログイン後にコピー
3. for ループ

for i in {1..10} # in は必ずしもそうである必要はありません結果を返すコマンドである限り、数値

do

echo $i

done

例 1: サブネットで使用できる IP をテストするスクリプトを作成します

#!/bin/bashfor i in {1..50}
do
    ping -c1 192.168.16.$i &> /dev/null  # -c1表示ping一次if [ $? -ne 0 ];then
        echo "192.168.16.$i successful"echo "192.168.16.$i" >> ~/ipavailable.txt
    fi
done~
ログイン後にコピー
例2: /dev

#!/bin/bashdir='/dev'for i in $(ls $dir)
doif [ -h $dir/$i ];then
        ((link+=1))elif [ -f $dir/$i ];then
        (( rfile+=1))elif [ -d $dir/$i ];then
        ((directory+=1))elif [ -b $dir/$i ];then
        (( block+=1 ))else(( typeunknow+=1))
    fi
done
echo 'block' $block
echo 'regular file' $rfile
echo 'directory' $directory
echo 'link' $link
echo 'unknow' $typeunknow
ログイン後にコピー

下の各ファイルタイプの数を数えます

ネストされたループ

例1: 9-9の乗算表を出力します

#!/bin/bashfor ((i=1;i<=9;i++))
dofor ((j=1;j<=i;j++))
    do
        echo -n "$i*$j=$[$i*$j]"done
    echo
done
ログイン後にコピー

例2: ログインに成功した後、ユーザーのログインアカウントのパスワードを確認しますquit
#!/bin/bashuser=&#39;zhangcan&#39;password=&#39;123&#39;tag=truewhile $tag
do
    read -p &#39;input your name : &#39; name
    read -p &#39;input your password : &#39; codeif [[ $name = $user ]] && [[ $code = $password ]];then
        echo &#39;login successful&#39;while $tag
        do
            read -p &#39;>>: ' cmdif [[ $cmd = 'quit' ]];then
                tag=falseelse$cmd
            fi
        done
    fi
done
ログイン後にコピー

と入力するとコマンドを実行して終了できます。

以上が基本的なシェル構文の紹介と使用の詳細内容です。詳細については、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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Windows 11 にクラシック シェルをインストールするにはどうすればよいですか? Windows 11 にクラシック シェルをインストールするにはどうすればよいですか? Apr 21, 2023 pm 09:13 PM

&lt;p&gt;オペレーティング システムをカスタマイズすることは、日常生活をより楽しくするための素晴らしい方法です。ユーザー インターフェイスの変更、カスタム テーマの適用、ウィジェットの追加などを行うことができます。そこで今日は、Windows 11にClassicShellをインストールする方法を説明します。 &lt;/p&gt;&lt;p&gt;このプログラムは長い間存在しており、オペレーティング システムを変更することができます。 2017年に解散したこの組織は現在、ボランティアによって運営され始めている。新しいプロジェクトは OpenShell と呼ばれ、興味のある人は現在 Github で入手できます。 &lt;/p&gt;&a

HRESULT 0x80073D02 問題が修正され、PowerShell のデプロイメントが失敗する HRESULT 0x80073D02 問題が修正され、PowerShell のデプロイメントが失敗する May 10, 2023 am 11:02 AM

スクリプトを実行すると、PowerShell で「Add-AppxPackage: Deployment failed with HRESULT: 0x80073D02, The package can be install because the resource itmodifying is currently in use. Error 0x80073D02...」というエラー メッセージが PowerShell に表示されますか?エラー メッセージに記載されているように、これは、前のプロセスの実行中にユーザーが 1 つまたはすべての WindowsShellExperienceHost アプリケーションを再登録しようとすると発生します。この問題を迅速に解決するための簡単な解決策がいくつかあります。解決策 1 – powershell コマンドを実行する前に終了する必要があるエクスペリエンス ホスト プロセスを終了します。

システム起動時に Explorer.exe が起動しない [修正] システム起動時に Explorer.exe が起動しない [修正] Jun 03, 2023 am 08:31 AM

最近、多くの Windows ユーザーが Windows システムの重大な問題に遭遇し始めています。問題は、システムのロード後に Explorer.exe が起動できず、ユーザーがファイルやフォルダーを開けないことです。ただし、Windows ユーザーは場合によってはコマンド プロンプトを使用して Windows エクスプローラーを手動で開くことができますが、これはシステムを再起動するたびに、またはシステム起動後に実行する必要があります。これは問題となる可能性があり、以下に説明する要因が原因です。システムファイルが破損しています。高速スタートアップ設定を有効にします。ディスプレイドライバーが古いか問題があります。システム内の一部のサービスに変更が加えられました。変更されたレジストリ ファイル。上記のすべての要素を念頭に置いて、ユーザーに確実に役立ついくつかの要素を考え出しました。

Linux でファイルの末尾の行をすばやく削除する方法 Linux でファイルの末尾の行をすばやく削除する方法 Mar 01, 2024 pm 09:36 PM

Linux システムでファイルを処理する場合、ファイルの末尾の行を削除する必要がある場合があります。この操作は実際のアプリケーションでは非常に一般的で、いくつかの簡単なコマンドで実行できます。この記事では、Linux システムでファイルの末尾の行をすばやく削除する手順と、具体的なコード例を紹介します。ステップ 1: ファイルの最終行を確認する 削除操作を実行する前に、最初にファイルの最終行がどの行であるかを確認する必要があります。ファイルの最後の行を表示するには、tail コマンドを使用できます。具体的なコマンドは次のとおりです: tail-n1filena

Python コードをすばやく API に変換する方法 Python コードをすばやく API に変換する方法 Apr 14, 2023 pm 06:28 PM

API 開発といえば、DjangoRESTFramework、Flask、FastAPI を思い浮かべるかもしれません。はい、これらを使用して API を作成できます。しかし、今日共有されたフレームワークを使用すると、既存の関数をより速く API に変換できます。それが Sanic です。 Sanic の概要 Sanic[1] は、パフォーマンスを向上させるために設計された Python3.7 以降の Web サーバーおよび Web フレームワークです。これにより、Python 3.5 で追加された async/await 構文を使用できるようになり、ブロックを効果的に回避し、応答速度を向上させることができます。 Sanic は、簡単かつ迅速に作成して起動する方法を提供することに尽力しています。

Open Shell Windows 11が動作しない問題の修正は次のとおりです。 Open Shell Windows 11が動作しない問題の修正は次のとおりです。 Apr 14, 2023 pm 02:07 PM

Windows 11 でオープン シェルが実行されないことは新しい問題ではなく、この新しいオペレーティング システムの登場以来ユーザーを悩ませています。 Open-Shell Windows 11 が動作しない問題の原因は特定されていません。プログラム内の予期しないエラー、ウイルスやマルウェアの存在、システム ファイルの破損などが原因で発生する可能性があります。知らない人のために説明すると、Open-Shell は 2017 年に廃止された Classic Shell の後継です。 Windows 11 に Classic Shell をインストールする方法に関するチュートリアルをご覧ください。 Windows 11のスタートメニューを置き換える方法

Windows でシェル スクリプト ファイルを実行するさまざまな方法 Windows でシェル スクリプト ファイルを実行するさまざまな方法 Apr 13, 2023 am 11:58 AM

Linux 用 Windows サブシステム 最初のオプションは、Linux バイナリ実行可能ファイルを Windows システム上でネイティブに実行するための互換性レイヤーである Windows サブシステム for Linux または WSL を使用することです。ほとんどのシナリオで機能し、Windows 11/10 でシェル スクリプトを実行できるようになります。 WSL は自動的には利用できないため、Windows デバイスの開発者設定を通じて有効にする必要があります。これを行うには、[設定] > [更新とセキュリティ] > [開発者向け] に移動します。開発者モードに切り替え、プロンプトを確認して [はい] を選択します。次にWを探します

超ハードコア!非常に実用的な Python とシェル スクリプトの例 11 個! 超ハードコア!非常に実用的な Python とシェル スクリプトの例 11 個! Apr 12, 2023 pm 01:52 PM

Python スクリプトの例: エンタープライズ WeChat アラーム、FTP クライアント、SSH クライアント、Saltstack クライアント、vCenter クライアント、ドメイン名 SSL 証明書の有効期限の取得、今日の天気予報と将来の天気傾向グラフの送信、シェル スクリプトの例: SVN フル バックアップ、 Zabbixによるユーザーパスワードの有効期限の監視、ローカルYUMの構築、前回の記事の読者ニーズ(負荷が高い場合、占有率の高い処理スクリプトを見つけて通知を保存またはプッシュ通知する)については、少し長いので読んでください。記事の最後には、やはりイースターエッグがあります。エンタープライズ WeChat アラームの Python スクリプト部分 このスクリプトはエンタープライズ WeChat アプリケーションを使用して WeChat アラームを実行し、使用できます

See all articles