私は、複数のサーバー上の複数のユーザーに複数のキーディレクトリがあることを確認するための一般的なスクリプトを作成したいと思います。また、各ユーザーの$ 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)
また、見ることができます