シェルスクリプト初心者です。
スクリプト(.shファイル)内でのコマンドの実行とターミナル上でのコマンドの実行結果が想定と違っていて困っています。
diffコマンドをスクリプト内で実行したいのですが、下記スクリプトを実行すると構文エラーになります。
スクリプト内のコマンドをターミナル上で実行すると成功します。
不勉強で申し訳ないのですが、スクリプト内での正しい書き方をどなたかお教えいただけないでしょうか。
スクリプトの内容
#!/bin/bash diff <( ls ./hoge ) <( sshpass -p password ssh リモートホストのIP ls /home/hoge )
手元の環境で試してみましたが構文エラーにはなりません。もしかして、スクリプトの別の箇所で構文エラーが発生しているのではないでしょうか。
> 構文エラーになります。
エラーを編集なしでそのまま質問文に入れてください。
あと OS や /bin/bash のバージョンも必要かもしれません。
下記がエラー内容です。
diff.sh: 行3: 予期しないトークン`(' 周辺にエラーがあります
diff.sh: 行3:`diff <( ls ./hoge ) <( sshpass -p password ssh リモートホストのIP ls /home/hoge )'
OSは、ssh接続先と接続元ともにCentOS7.6です
bashのバージョンは、ssh接続先と接続元ともにGNU.bash. バージョン4.2.46
diff.sh をどうやって実行していますか?
考えられる原因の一つとしては ( と < の間に non-breaking space が入っている、ですかね。
sh diff.shで実行しています。
なるほど、それは syntax エラーになりますね。shbang が付いていたのでスクリプト自体を実行しているのかと思っていました。
melianさん
ありがとうございました。解決しました。
シェルの仕組みをもっと勉強します。
回答1件
あなたの回答
tips
プレビュー