2017-02-28 14 views
0

sshを使用してリモートマシンで使用可能なスクリプトを実行しようとしています。 sshを介してクライアントから実行された場合、またはsshの後でサーバに実行された場合の出力は異なります。リモートマシンで実行可能なスクリプトを実行

スクリプトはファイルをトリミングします。 クライアント側から実行するには

tail -n 100 users.txt > temp.txt 
rm users.txt 
mv temp.txt users.txt 
echo $(wc -l users.txt) 
echo Done 

[email protected]_mac $ ssh [email protected]_mac '~/path_to_script/demo_script.sh' 

出力:

0 users.txt 
Done 

しばらくサーバ側でssh'ing後:

[email protected]_mac $ ssh [email protected]_mac 
[email protected]_mac $ cd ~/path_to_script/ 
[email protected]_mac $ ./demo_script.sh 

出力:

100 users.txt 
Done 

どのように我々は、リモートマシン上で利用可能であるスクリプトを実行しますか?構文は異なりますか?

+0

同じ結果が得られるはずです。私はそれが適切だとは思わないが、 'wc -l users.txt'で十分です。 'echo'に渡すためにコマンド置換でそれを呼び出す必要はありません。 – chepner

+0

実際、最初の例の作業ディレクトリは '〜/ path_to_script'ではなく、'〜/ users.txt'と '〜/ path_to_script/usersという2つの異なるファイルのサイズを取得しているようです。 txt'。 – chepner

+0

はい、現在の作業ディレクトリに問題がありました。 '〜/ path_to_script/users.txt'パスを取るように' demo_script.sh'を修正した後で正しく動作します。 –

答えて

1

スクリプトは、現在の作業ディレクトリで常にusers.txtを探します。

最初の例では、現在の作業ディレクトリはホームディレクトリです。そのため、./demo_script.shではなく~/path_to_script/demo_script.shでスクリプトを実行する必要があります。そのため、出力に行数が~/users.txtとなっています。 2番目の例では

は、スクリプトを実行する前~/path_to_script~から作業ディレクトリを変更、その出力は~/path_to_script/users.txtの行数が含まれています。

関連する問題