LinuxScrewのLinuxシェル/Bashスクリプトのヒント
Linuxでシェルスクリプトを作成する際に覚えておくと便利なヒントをいくつか紹介します。
シェルスクリプトは、Linux(およびMacOS、そして現在はWindows、Linux用のWindowsサブシステム)でワークフローを自動化するための多目的な方法です。シェルスクリプトの構文と動作には癖があり、スクリプトを簡素化するために使用できる便利なショートカットもあります。
これらのヒントはインターネット全体から収集されており、私自身のヒントもいくつか含まれています。
エラーが発生した場合でも、Bashスクリプトは実行を継続します!
これは、特にユーザー入力を受け入れてファイルを操作する場合に問題を引き起こす可能性があります。この動作を防ぐには、setコマンドを追加します
set -eu
スクリプトの最初の行には、常にシバンを含めてください:
#!/bin/sh
これは、スクリプトを解釈するためにどのシェルを使用する必要があるかをシステムに通知し、互換性のために重要です。 Bash用に作成されたスクリプトは、Zsh内で実行すると動作が異なる場合がありますが、シバンを含めることで、正しいシェルで解釈されるようにすることができます。
これにより、スクリプトを実行するとあいまいさが生じ、パイプとリダイレクトを使用するときに問題が発生する可能性があります。これはセキュリティの問題でもあります。スクリプトにroot権限が必要な場合は、スクリプト全体をrootとして実行するか、 sudoを使用して実行する必要があります。 。
このコマンドをスクリプトの先頭に追加して、root/sudo権限で実行されていることを確認します。このコマンドを使用すると、root権限を必要とするコマンドを実行しようとしたときではなく、何かを実行しようとする前にスクリプトが失敗します
# Check if running as root if ((EUID!=0 )); then printf "Please run as root" exit 1 fi
aptプロンプトを-yでスキップします
sudo apt install nano -y
sudo apt upgrade -y
Bashスクリプトを作成するときにパスを引用します。理由を説明する記事全体があることは十分に重要です。
CURR_DIR="$(dirname $0);" printf -- 'moving application to /opt/app.jar'; mv "${CURR_DIR}/application.jar" /opt/app.jar;
ユーザー入力を求める場合、デフォルト値は次を使用して設定できます。
echo "Enter a value" read val val=${val:-"Default Value"}
それはあなたの将来の自己のためです–あなたが何をしているのか、そしてなぜあなたがそれをしているのかを説明してください。コードの意図を明確にすることは、適切な健全性チェックであり、デバッグに役立ちます。また、広範囲にわたるコメントにより、後日コードに簡単に戻ることができます。
印刷、印刷、印刷
できるだけ多くの情報をコンソールに出力して、スクリプトがクラッシュした場合に、どこにあるかがわかるようにします。 クラッシュしました。デフォルトのBashスクリプトは必ずしも冗長ではありません。
スクリプトでエラーが発生した場合は、スクリプトを呼び出す可能性のある他のスクリプトが適切に反応できるように、適切な終了コードで終了するようにしてください。
-
Windows 10にBash(Linuxシェル)をインストールして使用する方法[チュートリアル]
WindowsでLinuxシェルを設定して使用する方法は次のとおりです– Linux用Windowsサブシステムを使用します ( WSL 。 このチュートリアルは、2020年以降の最新バージョンのWindows10を対象としています。古いソフトウェアを使用するべきではないため、古いバージョンのWindows10でWSLを使用する方法やWindows8/7 / XP/3.1の他の方法については説明しません。 Windowsを使用する必要がある場合は、セキュリティパッチをまだ受けているバージョンを使用してください! WSL は優れたツールであり、Linuxを離れたことがないかのよ
-
5 つの実用的な例を含む Bash スクリプト入門チュートリアル
進行中の Unix Sed および Unix Awk シリーズと同様に、Bash スクリプトに関するいくつかの記事を投稿します。実用的な例ですべての bash スクリプト テクニックをカバーします。 シェルは、ユーザー コマンドを解釈するプログラムです。コマンドは、ユーザーが直接入力するか、シェル スクリプトと呼ばれるファイルから読み取るかのいずれかです。ユーザーからの入力を直接読み取る場合、シェルは対話型シェルとして呼び出されます。 シェルは、ファイルからコマンドを読み取って実行するときに、非対話型シェルとして呼び出されます。この場合、シェルはスクリプト ファイルの各行を上から下に読み取