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

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

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

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

シェルスクリプト

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

Q&A

解決済

1回答

466閲覧

シェルスクリプト(bash)によるリモートホスト間のdiff

fzrtera

総合スコア2

bash

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

シェルスクリプト

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

0グッド

0クリップ

投稿2021/07/15 00:01

前提・実現したいこと

シェルスクリプト(bash)でリモートホスト間のdiffを行いたいと思っています。

発生している問題・エラーメッセージ

(付近にエラーがあります。

該当のソースコード

diff <( rsh -l hoge hogehoge1 / ) <( rsh -l hoge hogehoge2 / )

試したこと

diff <( rsh -l hoge hogehoge1 ls -l / ) <( rsh -l hoge hogehoge2 ls -l / )
上記はシェルスクリプトに記述して実行するとエラーとなりますがコマンドシェルに直接入力すると正しく動作します。また、シェルスクリプトでechoで上記コマンドを表示後に表示された内容をコマンドシェルに貼り付けても正しく動作します。一旦はrshで実行しているlsコマンドの結果をテキストファイルにリダイレクトしてテキストファイルをdiffで比較することによりリモートホスト間の比較は実現しています。
シェルスクリプトでのリダイレクト、(の取り扱いによる挙動でうまく動作していないように思えます。

補足情報(FW/ツールのバージョンなど)

redhat

ここにより詳細な情報を記載してください。

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

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

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

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

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

itagagaki

2021/07/15 00:16

> コマンドシェルに直接入力すると正しく動作します。 ターミナルでbashで実行すると期待通り動作するという意味ですよね。 シェルスクリプトは同じbashで実行しているのですか?
fzrtera

2021/07/15 00:43

itagagaki様 シェルスクリプトは同じbashで実行しています。
hoshi-takanori

2021/07/15 01:01 編集

シェルスクリプトはどうやって実行していますか? また、最初の行には何と書いてありますか?
fzrtera

2021/07/15 01:33

hoshi-takanori様 ・シェルスクリプトの実行  sh シェルスクリプトファイル名 ・シェルスクリプトの最初の行  #!/bin/bash
hoshi-takanori

2021/07/15 02:49

「sh シェルスクリプトファイル名」で実行するということは、明示的に bash ではなく sh で実行するということで、当然 bash の機能は使えません。 「bash シェルスクリプトファイル名」で実行するか、シェルスクリプトに chmod +x で実行権限をつけて「./シェルスクリプトファイル名」(カレントディレクトリにある場合)または「シェルスクリプトファイル名」(パスが通った場所にある場合)で実行すると良いでしょう。
guest

回答1

0

ベストアンサー

質問への追記・修正の依頼の欄で、シェルスクリプトはコンソールと同じbashで実行しているとおっしゃっいましたが、私はまだそこに疑問があります。
シェルスクリプトに

sh

1echo $BASH

を入れて実行してみてください。
bashはbashでも/bin/shで動いていないですか?

投稿2021/07/15 01:06

itagagaki

総合スコア8402

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

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

fzrtera

2021/07/15 01:36

itagaki様 1 ご指摘の場合はシェルスクリプトの記述内容を修正すれば実現可能でしょうか。 2 コンソールは常にbashが動作していてタブでファイル候補が表示されたりしています。 3 現在手元に環境がない状況で質問させていただいています。
itagagaki

2021/07/15 01:38

sh シェルスクリプト で実行して /bin/sh で動かすからエラーになるのでは。 bash シェルスクリプト または /bin/bash シェルスクリプト または chmod +x シェルスクリプト シェルスクリプト で実行すれば /bin/bash で期待通り動くと思います。
fzrtera

2021/07/15 02:10

itagaki様 /bin/bashで実行した結果を後日回答させていただきます。
fzrtera

2021/07/19 14:36

itagaki様 /bin/bashで実行した結果、期待通りに動作しました。大変勉強になりました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問