変数出力に含まれるファイルの内容を置き換える方法

変数出力に含まれるファイルの内容を置き換える方法

変数構文やその他のコマンドを検索しましたが、渡すことはできません。

btrfsスナップショットを使用して作成されたフォルダがあります。各フォルダには名前付きファイル/etc/fstabがあり、そのファイルを編集して常にフォルダパスの値に置き換える必要があります。@たとえば、@snapshots/daily/root2020-12-27_19H05

ここの変数には2020-12-27_19H05常に接頭辞が付きますroot

ファイルの編集を始める前の最初のステップは、変数として見つかったすべてのフォルダにルートとしてファイルを生成する単純なbashスクリプトを作成するなどの簡単なタスクを実行することです。

cd /.snapshots/daily
SNAPSHOTS=$(ls -d root*/)
echo > $SNAPSHOTS/test

ただし、次のエラーが発生します。

bash: $SNAPSHOTS/test: ambiguous redirect

私が考えることができるすべての場所で ""、''、()、{}を使用してすべてを試しましたが、すべて失敗しました。いくつかの場所でSUDOを試してみましたが、やはり失敗しました。これはインターネットでよくあるようですが、私が読んだことのどれも私の問題を理解して解決できませんでした。

私は何が間違っていましたか?

ありがとうございます!

ベストアンサー1

SNAPSHOTS複数のディレクトリを含めることができます。

set -xコマンドの前に行を挿入して問題を確認できますecho。が表示されます$SNAPSHOTS

ループを使用して、echo一致する各ディレクトリに対してコマンドを呼び出します。

for i in root*/
do
    if [ "$i" != 'root*/' ]
    then
        touch "$i"/test
    fi
done

一致するディレクトリがない場合、アドインはif実行されません。touch 'root*/test'

おすすめ記事