2016-10-30 6 views
1

私は現在、ftpとapacheを使って新しいサーバーを設定するためのスクリプトを書いていますが、どのパスワードを使うべきかを書いていないので、現在の行。私は、変数の内側にそれを置くとき、動作するようには思えないが変数をbashストアにパスワードを生成

< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c12 

PASSGEN="< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c12" 
FTPPASS=$(eval $PASSGEN) 
DBPASS=$(eval $PASSGEN) 
echo $FTPPASS 

私はPASSGEN文字列がある場合は、日付が変更された場合は、正常に動作します。私は完全に逃したsomehtingですか?

FTPPASS=$(eval "$PASSGEN") 

をもすべて大文字の変数名を使用して定義されたユーザーのために良いアイデアではありません。あなたが最初の変数展開を望んでいるよう

+1

その他。 _end_の ' - 'は、範囲の一部であると誤解できないようにします。 – mklement0

+1

申し訳ありませんが、私はそれを疑問に思っていましたが、私は世代のためにウェブで見つけたものをコピーしました –

答えて

2

あなたは、変数名($PASSGEN)の前で$が欠落しています環境変数に通常使用される変数と同じです。また、パスワードを変数に保存することは、お使いの環境によっては良い考えではないかもしれません。


はEDIT:

私はあなたの代わりにコマンド置換$()を使用することをお勧め、evalは必要ありません:あなたは機能を使用する必要があるときは、変数を使用している

$ PASSGEN=$(</dev/urandom tr -dc _A-Z-a-z-0-9 | head -c12) 

$ echo $PASSGEN 
zT52YgWXoXcW 
+0

ポストのミスタイプがパテクライアントからコピーできませんでした –

+0

@HenrikBøgelundLavstsenそれ以外は私にとっては完璧に働いています。 – heemayl

+0

あなたは正しく動作していますが、今は間違っています。 –

0

。右隣りに配置します: - `-`で範囲を分離する必要tr`は` '_A-ZA-Z0-9-'`あってはならない `に渡すオペランド:余談として

passgen() { 
    < /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c12 
} 

ftp_pass=$(passgen) 
db_pass=$(passgen) 
echo "$ftp_pass" 
echo "$db_pass" 
関連する問題