シェルスクリプトで2本の水平バーを使って外部パラメータを受け取る方法
2022-02-07 18:33:30
まず、効果はこんな感じです。
短いオプション(-)と長いオプション(--)の両方を扱うことができる
[developer@hadoop-cluster-manager shell]$ . /demo.sh --help
The sqoop program starts running: demo.sh
Usage: . /demo.sh [options]
Options:
--append, -a: append to import (default is append mode)
--overwrite, -o: overwrite import
--method, -m: single-single-day import
interval-Interval import
all-all-table import
--date, -d: single-day import, with a date (in yyyymmdd format)
--startdate, -s: interval-import, start date
--enddate, -e: interval import, end date
--help, -h help
シェルスクリプトに外部引数を与える非常に簡単な方法があります。スクリプトを実行するときに渡される最初のいくつかの引数を参照するために $0,$1,$2... を使います($0 はスクリプト名です)。
しかし、これは十分なエレガントさではありません、結局のところ
もう一つの方法は、シェルスクリプトの中でgetoptsコマンドを使うことです。これは短いオプション(例:-d, -s, -h)しか取れませんが、便利で比較的簡単なので、自分で検索することができます。
しかし、長いオプションと短いオプション(例:-date, -d, --startdate, -s, --help, -h)の両方を使用して上記の効果を得たい場合、以下のようになります。
は、getoptコマンドしか使えません。
# Define command execution options
if ! ARGS=$(getopt -o aom:d:s:e:h --long append,overwrite,method:,date:,startdate:,enddate:,help -n "$0" -- "$@"); then
echo "Terminating... "
echo -e "Usage: . /$SCRIPT_NAME [options]\n"
echo -e "Options:\n --append, -a: append import (default is append mode) \n --overwrite, -o: overwrite import \n\n --method, -m: single-single-day import \n interval-import \n all-all-table import \n\n --date , -d: single-day import, data on a certain date (in the format yyyymmdd) \n\n --startdate, -s: interval import, start date \n\n --enddate, -e: interval import, end date \n\n --help, -h help"
exit 1
fi
# Assign normalized command-line arguments to location parameters ($1,$2,...)
# The -- ensures that whatever options passed in as part of the script won't get interpreted as options for set, but as options for the command denoted by the $ progname variable.
eval set -- "${ARGS}"
# Accept execution options; assign to variables
while true; do
case "$1" in
-a|--append)
mode='append'
shift
;;
-o|--overwrite)
mode='overwrite'
shift
;;
-m|--method)
method=$2
shift 2
;;
-d|--date)
date=$2
shift 2
;;
-s|--startdate)
startdate=$2
shift 2
;;
-e|--enddate)
enddate=$2
shift 2
;;
--)
shift
break
;;
-h|--help)
echo -e "Usage: . /$SCRIPT_NAME [options]\n"
echo -e "Options:\n --append, -a: append import (default is append mode) \n --overwrite, -o: overwrite import \n\n --method, -m: single-single-day import \n interval-import \n all-all-table import \n\n --date , -d: single-day import, data on a certain date (format yyyymmdd) \n\n --startdate, -s: interval import, start date \n\n --enddate, -e: interval import, end date \n\n --help, -h help"
exit 0
;;
?)
echo "Missing options, pls check!"
exit 1
;;
esac
done
この記事は、シェルスクリプトは、2つの水平方向のバーを使用して外部引数を受信することについてのすべてです、より関連するシェルスクリプトの引数を受信する内容は、スクリプトハウスの過去の記事を検索してくださいまたは次の関連記事を閲覧を継続し、あなたが将来的にもっとスクリプトハウスをサポートして願って!.
関連
-
bash:/root/.bashrc:Permission deniedを解決する。
-
データベーステーブルのインクリメンタル同期処理を実装するシェルスクリプト
-
バウンスシェルのいくつかのポーズをまとめたもの
-
シェルプログラミング。変数の高度な使い方
-
シェルの4つの実行モード(スタートアップモード)の実装
-
Impala-shellコマンドパラメータの実装
-
配列に文字列が存在するかどうかを判定するシェルサンプル実装
-
シェルファジー・マッチングとレギュラー・ディテール
-
NCバウンスシェルのいくつかの方式を説明
-
ワンクリックでgithubとgiteeに同時にコードをプッシュするシェルスクリプトの解決法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Linux用カスタムアンチテロスクリプトのアイデアとテスト
-
IP属性クエリのためにcurlを呼び出すシェルスクリプト
-
シェルとsedとawkの正規表現に関するFAQ
-
シェルスクリプトでの/dev/nullの使用方法まとめ
-
[解決済み】Bash スクリプトと /bin/bash^M: bad interpreter: そのようなファイルまたはディレクトリがない [重複] [重複
-
シェルスクリプトの入門書。記述形式と実行方法の実装
-
シェルスクリプトでJavaのjarプログラムを起動/停止する方法
-
Linuxでシェルスクリプトの先頭に固定書式を設定する方法
-
シェルでのawk printの使い方を解説します
-
XshellとXftpの無料ダウンロードとインストールと手順(グラフィック)