特定のパスの他のLinuxサーバーからファイルを削除する方法は?

特定のパスの他のLinuxサーバーからファイルを削除する方法は?

これは私のスクリプトです。ここでは、ユーザーが指定したパスにあるファイルを一覧表示するために使用しています。サーバーにログインしますが、ファイルはリストされません。誰でもわかりますか?

#! /bin/bash
echo "Please give correct path"
for HOST in $(cat servers.txt ) ; do
    ssha $HOST < List.sh
done

catlist.sh

#!/bin/bash
echo "Enter the path to list the files"
read $path
ls -lrt

ベストアンサー1

問題はstdinを介してスクリプトを渡しますが、スクリプト自体はstdinから読み取ろうとすることです。 stdinから渡されるスクリプトに引数を渡すには、コマンドライン引数を使用し、必要に応じて外部ループのstdinから読み取られた引数を使用することをお勧めします。

2番目の問題は、呼び出し構文がread間違っていることです。 (なしで変数名が必要です。)また、に$渡そうとします。それ以外の場合、入力にバックスラッシュが含まれていると、不快で予期しないことが発生します。-rread

for i in $(cat servers.txt)3番目の問題は、あなたが望んでいる間それをやっていることです<servers.txt while read -r i。これは一行ずつ行われます。forループはファイル全体をメモリに読み込むだけでなく(大きなファイルの場合は爆発する可能性があります)、個々の行にスペースがあると失敗します。

おすすめ記事