UnixWare 7はLinuxに変数を渡すことはできません。

UnixWare 7はLinuxに変数を渡すことはできません。

私は初めてBashに触れ、解決するのは本当に難しいですが、一部には簡単かもしれない問題に直面しました。

私はSSHがなく、RSHだけが利用できる非常に古いSCO UnixWare 7システムを持っています。 SCOはもはや存在せず、破産したと思います。約15年の間このボックスを使用しましたが、一度も問題は発生しませんでした。私たちは夏にこのプラットフォームを離れる予定ですが、今はいくつかのファイルをLinuxシステムの1つにコピーする必要があり、非常に短いスクリプトを書こうとしています。この環境ではセキュリティは重要ではないので、RSHは安全ではないと言わないでください。 UnixWareボックスとCentOS 6を実行する2つの異なるLinuxボックスは、駐車場の複数の障害物を管理するために3人だけが使用し、インターネットや他のネットワークに接続されていません。 4ポートスタンドアロンスイッチに接続された3台のサーバーのみ、他の接続はありません

質問

CentOS 6を実行しているLinux1のUnixwareサーバーでこのコマンドを実行して、フォーマットされたデータに変数を設定し、内容を表示しました。

rsh Linux1 "TEST=$(date --date='-9day' +%A_%B-%d_Backup); echo \$TEST" 

このエラーが発生します。

# rsh Linux "TEST=$(date --date='-9day' +%A_%B-%d_Backup); echo \$TEST"
UX:date: ERROR: Illegal option -- -
UX:date: ERROR: Incorrect usage
UX:date: TO FIX: Usage:
        date [-u] [+format]
        date [-u] [[mmdd]HHMM | mmddHHMM[[cc]yy]]
        date [-a [-]sss.fff]

CentOS 6を実行しているLinux2に移動してLinux1に対して同じコマンドを実行すると、エラーは発生しません。

[Linux2 ~]# rsh Linux1 "TEST=$(date --date='-9day' +%A_%B-%d_Backup); echo \$TEST"
Wednesday_January-14_Backup

UnixWareサーバーで実行しているときにこのコマンドが機能しないのはなぜですか? Unixwareは、処理のために文字列をLinux1に渡すのではなく、ローカルで処理しようとします(--date古代のUnixwareボックスにはオプションがなかったため、エラーが発生しました)。

ベストアンサー1

これは実際にはUnixWare、Bash、RSH関連の問題ではありません。これはdate、リモートシステムと同じ実装がないすべてのシステムに影響を与える参照の問題です。たとえば、Bashを実行しているMacからLinuxシステムにSSHを接続すると、これが発生する可能性があります。

dateローカルシステムの代わりにリモートシステムを実行するには、次のように参照を調整します。

# rsh Linux1 'TEST=$(date --date=-9day +%A_%B-%d_Backup); echo $TEST'

このようにして、いくつかの内部引用符とエスケープをスキップすることもできます。

おすすめ記事