質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

Q&A

解決済

1回答

15120閲覧

シェルスクリプトを実行した際の実行結果ログをファイル出力したい。

cat_nyannyan

総合スコア4

シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

0グッド

0クリップ

投稿2019/08/11 12:35

前提・実現したいこと

virtualBox上のCentOS7上にて、以下の要件を満たすシェルスクリプトを作ろうとしています。

★要件
1.ユーザ作成に必要な情報を引数で指定し、指定した通りのユーザを作成する。
2.ユーザ作成時に該当ユーザのホームディレクトリを作成する。
3.ユーザ作成処理に入る前に、作成しようとしているユーザが既に存在していないかを
確認し、居る場合はログを出力しスクリプトを終了させる。
4.スクリプトの実行結果のログをファイル名「スクリプト名yyyyMMddHHmm.log」で出力させる。

該当のソースコード

以下現時点で作成したシェルです

Shellscript

1#!/bin/sh 2PASS=hogehoge 3USERNAME=hoge 4 5/usr/sbin/useradd $USERNAME 6echo $USERNAME":"$PASS | /usr/sbin/chpasswd 7 8CURRENT_DIR=$(cd "$(dirname "$(readlink -f "${0}" || echo "${0}")")"; pwd -P) 9LOG_FILE="${CURRENT_DIR}/shellscript_$(date +%Y%m%d%H%M).log" 10command 2>&1 | tee -a "${LOG_FILE}"

試したこと

これまでシェルスクリプトを書いた経験がなく、
個人ブログやQiitaの記事を参考にしつつ上記コードを作成しました。

聞きたいこと

上記スクリプトを実行したところ、指定したユーザが作成され、
また、ログファイル自体も作成されるのですが、
肝心の実行結果がログファイルに出力されていないようなのです。

上記に記載した要件1~4を満たすスクリプトを作成したいのですが、
不足箇所や、間違っている点についてお分かりになる方がいらしたら
ご教示いただきたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

command 2>&1 | tee -a "${LOG_FILE}"
だと、 command というコマンドの実行結果がログファイルに保存されますね。
command というコマンドを初めて知りました...

そこには実際に記録したいコマンド群がこないと意図通りにはならないと思います。
なので、

#!/bin/sh CURRENT_DIR=$(cd "$(dirname "$(readlink -f "${0}" || echo "${0}")")"; pwd -P) LOG_FILE="${CURRENT_DIR}/shellscript_$(date +%Y%m%d%H%M).log" PASS=hogehoge USERNAME=hoge ( /usr/sbin/useradd $USERNAME echo $USERNAME":"$PASS | /usr/sbin/chpasswd ) 2>&1 | tee -a "${LOG_FILE}"

みたいに () でくくってサブシェルの実行結果を記録するようにしてみるのはどうでしょうか。

投稿2019/08/11 12:45

mokemokechicken

総合スコア948

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cat_nyannyan

2019/08/11 14:37

お教えいただいた内容を元にスクリプトを修正してみたところ、 私が希望していた通りの結果になりました。 自分で調べても中々思うような結果にならなかったため、 非常に助かりました、ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問