MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
シェルスクリプトの基礎 - 外部コマンドのソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
シェルスクリプトの基礎 - 外部コマンド
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == シェルスクリプトにおいて、外部コマンドを使用する必要がある場合、その外部コマンドが使用可否を調べておくと便利である。<br> <br><br> == 外部コマンドの使用可否 == 以下の例では、pythonコマンドの使用可否を確認している。<br> <br> <code>type -P <コマンド名></code>は、環境パスで指定されたディレクトリから<コマンド名>を検索して、そのフルパスを取得するが、<br> ここでは、<コマンド名>の使用可否を確認するために利用している。<br> <br> そのまま実行すると<コマンド名のフルパスが出力されるので、/dev/nullデバイスへリダイレクトして、出力を抑制している。<br> <syntaxhighlight lang="sh"> if type -P python > /dev/null; then echo "python コマンドを使用できます" else echo "python コマンドが見つかりません" fi </syntaxhighlight> <br> また、指定した外部コマンドが使用できない場合、シェルスクリプトを終了させるには、以下のように記述すればよい。<br> 条件式を<code>!</code>で反転させていることに注意すること。<br> <br> また、<code>echo</code>の出力を<code>>&2</code>とリダイレクトすると、標準エラー出力へ出力できる。<br> <syntaxhighlight lang="sh"> if ! type -P python3 > /dev/null; then echo 'This script requires Python 3. Please install Python 3 first and try again.' >&2 exit -1 fi </syntaxhighlight> <br><br> == 外部コマンドの出力と変数 == <code>ls</code>、<code>grep</code>、<code>find</code>等のコマンドの実行結果を変数に代入するには、以下のように記述する。<br> 変数=$(コマンド) または 変数=`コマンド` <br> 以下の例では、lsコマンドの実行結果を変数FILESに代入して、echoで出力している。<br> <syntaxhighlight lang="sh"> #!/bin/sh FILES=$(ls) echo "$FILES" </syntaxhighlight> または<br> <syntaxhighlight lang="sh"> #!/bin/sh FILES=`ls` echo "$FILES" </syntaxhighlight> <br><br> == パイプとwhile readコマンド == <code>find . -name '*.sh'</code>等の外部コマンドの出力結果を1行ずつ処理するには、<code>パイプ</code>で<code>while read</code>コマンドに接続して記述する。<br> <br> 以下の例では、カレントディレクトリ下の.shファイルを再帰的に列挙している。<br> <syntaxhighlight lang="sh"> find . -name '*.sh' | while read SHFILE; do echo "$SHFILE" done </syntaxhighlight> <br><br> == 外部コマンドの出力と配列 == パイプを使用せず、<code>`コマンド名`</code>または<code>$(コマンド名)</code>で実行した外部コマンドの出力を、配列で受け取る方法もある。<br> <br> forループのinの後の変数(以下の例では、変数SHFILES)には、スペース区切りで各要素が列挙される。<br> 変数SHFILESの値にスペースが含まれる場合、行を1つの要素として処理するためには、変数をダブルクォーテーションで囲む必要がある。<br> <syntaxhighlight lang="sh"> SHFILES=$(find . -name '*.sh') for SHFILE in "$SHFILES"; do echo "$SHFILE" done </syntaxhighlight> <br><br> == 日時 == <code>date</code>コマンドを使用すると、現在時刻を表す文字列を自由なフォーマットで取得することができる。<br> 例えば、時刻入りの簡単なログを出力する場合やバックアップを作成する時のファイル名の構成のために使用する。<br> <br> 以下の例では、<code>date</code>コマンドを使用して、日付からYYYYMMDD-HHMMSSのような文字列を作成している。<br> date +%Y%m%d-%H%M%S 20200101-083015 <br> 以下の例では、現在日時をファイル名に付加してファイルのコピー(バックアップ)を行っている。<br> cp Sample.txt Sample_`date +%Y%m%d`.txt # 出力 ls Sample.txt Sample_20050102.txt <br><br> __FORCETOC__ [[カテゴリ:シェルスクリプト]]
シェルスクリプトの基礎 - 外部コマンド
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse