私のコードで$ HOME変数の値を使用するにはどうすればよいですか?

私のコードで$ HOME変数の値を使用するにはどうすればよいですか?

私は、複数のサーバー上の複数のユーザーに複数のキーディレクトリがあることを確認するための一般的なスクリプトを作成したいと思います。また、各ユーザーの$ HOME変数を活用したいと思います。

たとえば、これが真であるとします。

  • サーバー1:jdoeのホームディレクトリは/home/jdoeです。
  • サーバー2:jdoeのホームディレクトリは/opt/jdoe2です。
  • サーバー3はまだ構築されていません。サーバーが構築されるまで$ HOMEをどこに構築したのかわかりません。
  • サーバー4:mysqlのホームは/opt/home/mysqlです。

以下は私の親リストです(最も重要なものから最も重要ではないものの順に)。

$ cat mylist.txt
$HOME/most_impt_dir1
$HOME/most_impt_dir2
$HOME/most_impt_dir3
$HOME/misc
$HOME/junk

...このユーザーが所有する最も重要なディレクトリを探したいです。

これが私が試していることです:

for i in `cat mylist.txt`
do

  if [[ -O $i ]] && [[ -d $i ]]; then
    echo "found it: $i"
    break
  else
    echo "$i is not it."
  fi

done

上記のコードは実際に確認するので、私のリストのどの項目でも機能しません。私のコードでユーザー変数の値を$HOME使用するにはどうすればよいですか?$HOME

ベストアンサー1

With envsubst- 次の理由でfor/catループをループに置き換えます。while/read

#!/bin/bash

while IFS= read -r i
do

  if [[ -O $i ]] && [[ -d $i ]]; then
    echo "found it: $i"
    break
  else
    echo "$i is not it."
  fi

done < <(envsubst < mylist.txt)

また、見ることができます

おすすめ記事