
あるサーバーから別のサーバーにファイルをコピーするコマンドを生成しようとしています。そのため、次のようにscp
8 つの引数をスクリプトに渡しています。expect
expect my_x_script.exp file_src file_dest s_user s_pass s_host d_user d_pass d_host
スクリプトにこれほど多くの引数を渡すことは有効でしょうかexpect
?
答え1
はい、引数が多すぎても問題ありません。expect のバージョンに応じて、次のいずれかを使用して値を抽出します。
lassign $::argv \
src_file src_user src_pass src_host \
dest_file dest_user dest_pass dest_host
# or
foreach {src_file src_user src_pass src_host dest_file dest_user dest_pass dest_host} $::argv {break}
しかし、ある時点でユーザーインターフェースの管理が難しくなります。コマンドラインオプションを使用して、物事を整理することを検討してください。cmdline
パッケージからtcllib
. 次に、次の操作を実行します。
expect my_x_script.exp \
-src_file file_src \
-src_user s_user \
-src_pass s_pass \
-src_host s_host \
-dest_file file_dest \
-dest_user d_user \
-dest_pass d_pass \
-dest_host d_host