評価が機能しない

評価が機能しない

乱数を得るためにこのコードを実行してみましたが、評価は機能しないようです。これが私のコードです。

#!/bin/bash

# Sequencia alfanumerica de 12 carateres aleatoriamente(maiusculas e minusculas)

ファイル="/home/ruimachado/password.txt"
Oncepass="/home/ruimachado/once_pass.txt"
randompasswd=$(cat /dev/urandom | tr -dc '1-9' | 折りたたみ -w 1 | 頭 -n 1 > $oncepass)
onlytail=$(tail-1 $oncepass)
パス=$(tail-1$file)
testename=$(grep -R $onlytail $file)


if [ $onlytail != "$testename" ]
    それから
    echo "ecoar para oファイルを確認してください"
    エコ $onlytail >> "$file"
    その他    
    エコ「私は存在する」
    エコ「$onlytail」

フィリピン諸島
$randompasswd 評価
エコ「$onlytail」
エコ「ピム」
0番出口

出力:

  1. 番号が存在しない場合
ecoar para oファイルを探す
1
ピム
  1. 数字が存在する場合
私は存在する
サム
サム
ピム

彼らは私に同じ番号を与えた。誰でも私を助けることができれば幸いです。

私の英語でごめんなさい

答え1

意志は空なevalので何もしません。$randompasswd

randompasswd次の項目

randompasswd=$(cat /dev/urandom | tr -dc '1-9' | fold -w 1 | head -n 1 > $oncepass)

内部コマンドは$(...)出力を生成しないため(出力がファイルにリダイレクトされるため)、空の$randompasswd文字列になります。

eval実際にランダムな文字列を実行したくないので大丈夫です。

これに加えて、$onlytailin if- ステートメントのように二重引用符で囲む必要がある引用符のない変数拡張がたくさんあります(スペースが含まれている場合は構文エラーが発生します)。

このコードで何をしたいのかわからないので、あまり話すことはできません。

12個の英数字で構成されるパスワードストリームを生成するには:

tr -dc '[:alnum:]' </dev/urandom | fold -w 12

次のいずれかを選択します。

tr -dc '[:alnum:]' </dev/urandom | fold -w 12 | head -n 1

100個の固有のパスワードを生成するには(そしてパスワードが一意であることを確認してください):

while true; do
    tr -dc '[:alnum:]' </dev/urandom | fold -w 12 | head -n 100 | sort -u -o password.list
    if [ "$( wc -l <password.list )" -eq 100 ]; then
        break
    fi
done

これは100個のパスワードを生成し、それらをソート(重複排除)することから始まります。次に、生成されたファイルに100行があるかどうかをテストします。それ以外の場合は操作全体を再実行し、そうでない場合はループを終了します。ファイルがpassword.listあれば上書きされます。

既存のファイルが存在し、password.listファイルにまだ存在しないパスワードを作成(および追加)したい場合:

while true; do
    newpassword=$( tr -dc '[:alnum:]' </dev/urandom | fold -w 12 | head -n 1 )
    if ! grep -q -F "$newpassword" password.list; then
        printf 'New password generated: %s\n' "$newpassword"
        printf '%s\n' "$newpassword" >>password.list
        break
    fi
done

関連情報