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

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

新規登録して質問してみよう
ただいま回答率
85.46%
bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

4回答

1229閲覧

bashでコマンド結果からgrepで抽出しlogをはかせる

ITU04307852

総合スコア2

bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2020/09/06 08:04

このような形でコマンド実行結果からgrepで結果を絞りそれをログファイルとして吐き出してあげたいのですが
うまくいかないため
やり方を教えていただけると助かります。

#!/bin/bash
commandlist=("sysctl -a | grep eth0> eth0.txt " "yum list | grep php> php.txt"
"ifconfig eth0> eth0X.txt ")
for i in "${commandlist[@]}"; do
echo $i
$i
done

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

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

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

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

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

guest

回答4

0

ベストアンサー

実行コマンドの記録取りたいなら素直に set -x 使いましょうよ…。
リダイレクトは毎コマンド各必要はなくて、処理の先頭で exec すれば済みます。

bash

1# コマンドと出力両方残す場合(追記) 2exec >> log.txt 2>&1 3set -x 4command1 5command2 6

bash

1# コマンドだけ残す場合(追記、エラーも一緒に) 2exec 2>> log.txt 3set -x 4command1 5command2 6

投稿2020/09/06 08:41

angel_p_57

総合スコア1672

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

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

0

bash

1#!/bin/bash 2cat > hoge <<EOD 3sysctl -a | grep eth0> eth0.txt 4yum list | grep php> php.txt 5ifconfig eth0> eth0X.txt 6EOD 7 8sh hoge

素直に、単にこうすればいいとは思うのだが。ナニが目的なのかよくわからんです。

bash

1#!/bin/bash 2sysctl -a | grep eth0> eth0.txt 3yum list | grep php> php.txt 4ifconfig eth0> eth0X.txt

投稿2020/09/06 08:33

編集2020/09/06 08:34
shiketa

総合スコア3990

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

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

0

sysctl -a | grep eth0 > commandlist
echo "" >> cmmandlist
yum list | grep php >> commandlist
echo "" >> commandlist
ifconfig eth0 >> commandlist

cat commandlist

追記、別にふざけている訳ではなく、
質問文とやりたいコマンド事例を素直に読むと、
こうなったのです。

投稿2020/09/06 08:23

編集2020/09/06 08:28
hana_yama_san

総合スコア923

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

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

0

複数コマンドの分割(|)やリダイレクト(>)は、変数展開を行う前に解釈されるので、変数展開後にそれらを行いたい場合は、evalが必要です。

sh

1eval $i

投稿2020/09/06 08:13

otn

総合スコア84798

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問