SSHコマンド内で割り当てられた変数は正しい値を返しません。

SSHコマンド内で割り当てられた変数は正しい値を返しません。

ssh私のスクリプトセクションで次のコマンドを実行しています。このコマンドは、lsオプションのファイルサイズを減らして変数に保存するように設計されています。次に変数を印刷します。

echo "Enter srouce file";
read src_file;
src_size =`ls -latr $src_file | awk  '{ print $5 }' `;
echo "The source file size is $src_size ";

コマンドラインから実行するとうまく動作します。

次のようにスクリプトで同じコマンドを試すときssh

ssh user@server "echo "enterfile";read src_file;echo "enter path ";read path;cd $path;src_size=`ls -latr $src_file | awk  '{ print $5 }' ` ; echo The source file size is $src_size;"

これは失敗しました。いくつかのローカル一時値を保存し、正しいファイルサイズではなく同じファイルサイズを返します。

ベストアンサー1

スクリプトを使用すると、引用の問題によってコマンドが混乱するのを防ぐことができます。

よりきれいで管理も楽で、見た目も良くなりましたね:)!

たとえば、次のようにします。

echo "Enter source file"
read src_file
ssh user@server 'bash -s' < /path/to/local_script.sh "$src_file"

コンテンツlocal_script.sh:

#!/bin/bash
src_file="$1"
src_size =`ls -latr $src_file | awk  '{ print $5 }'`
echo "The source file size is $src_size "

パスを追加することを忘れないでくださいlocal_script.sh:)

おすすめ記事