変数を使わずにgrepを取得する

変数を使わずにgrepを取得する

私は乱数を生成するechoコマンドに変数を割り当てています。

例:n=$(echo $(( (RANDOM%6) +1)).私はそこにいるはずです/etc/passwd

したがって、私の構文は次のようになります。

n=$(echo $(( (RANDOM%6) +1)) | grep "$n" /etc/passwd

ただし、ファイル全体の内容(/etc/passwd)を出力として取得します。構文エラーがどこにあるかわかりません。

重要なことは、1行でのみ出力されることです。

答え1

2つのコマンドを分離して順次実行し、セミコロンの代わりにパイプを使用してIoを共有したことを確認しました。努力する

n=$(echo $(( (RANDOM%6) +1)) ; grep "$n" /etc/passwd

答え2

例:n=$(echo $(( (RANDOM%6) +1)).私はそこにいるはずです/etc/passwd

/etc/passwdそれでは、1から6までの任意の数字を含むすべての行を印刷しようとしますか?

そうではないでしょうか? (デフォルトのPOSIXシェルが実行するbashorzshまたはkshfor仮定)$RANDOMいいえサポートする):

grep $((RANDOM%6+1)) /etc/passwd

他の場所で対応する乱数が必要な場合:

n=$((RANDOM%6+1))
grep $n /etc/passwd

私はこれがあなたが望むものだとは思わないが、問題を過度に単純化し、意図を失っている。

関連情報