[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: bash array



>> I have the user list and the password list. I shot them with BASH. I
>> want to give passwords to the usernames in these separate files in
>> order.
>>
>> File names:
>> Users.list
>> Passwords.list

Hello

I'm sorry for the late reply.
The problem is: I can pull the users one by one. I can not do the same
for passwords.

Do I need to use "Mapfile" for this?

example-mapfile:

passwords=(cat $pass.list)
mapfile -t pass < "$passwords"


example-script:
   -- user.list
      a
      b
      c

  -- pass.list
     xxx
     yyy
     zzz


script:

#!/bin/bash


pass=$(cat pass.list)

for i in user=$(cat user.list); do exampleporagram $i $pass; done








On Mon, Jan 15, 2018 at 5:39 PM, Greg Wooledge <wooledg@eeg.ccf.org> wrote:
> On Sun, Jan 14, 2018 at 03:46:06PM +0300, Gokan Atmaca wrote:
>> I have the user list and the password list. I shot them with BASH. I
>> want to give passwords to the usernames in these separate files in
>> order.
>>
>> File names:
>> Users.list
>> Passwords.list
>>
>> In a loop, I have to not throw them into users of these passwords.
>
> We need to know the contents of these files, not their names.
>
>> I did this for it, but it did not work.
>>
>> #!bin/bash
>> passwords = $ (cat passwords.list)
>> for i in $ (cat passwordlist); do my program $ i $passwords; done
>
> There are many mistakes here, even without knowing what the files
> contain or what you are trying to do with them.
>
> First, your shebang is wrong.  It must be #!/bin/bash rather than
> #!bin/bash.
>
> Second, your assignment is wrong.  It must be var=value rather than
> var = value.  You CANNOT have spaces around the = sign.
>
> Third, your command substitution is wrong.  It must be $(command)
> rather than $ (command).  You CANNOT have a space between the $ and (.
>
> Fourth, if your passwords.list file contains spaces (which many
> good passwords WILL contain), your entire algorithm is wrong.  Your
> use of $(cat ...) splits the contents of the file on ALL whitespace,
> not just newlines.  A password with a single space in it will be
> treated as two words, and the loop will iterate once for each of
> those words.
>
> Also (let's call this bug number 4.5), any globbing characters in
> the password.list file (like ? or * or [...]) will break things with
> the algorithm you've chosen.
>
> And then there's your for loop ... ugh.  No.  It's just unbearable.
> This isn't valid code.  It's just random characters.
>
>> How do I make an Array? Or how can I solve it?
>
> Start from the beginning: WHAT IS IN EACH FILE?
>
> Suppose users.list looks like this:
>
> fred
> barney
> wilma
> betty
>
> And suppose passwords.list looks like this:
>
> 2^7djfnc5
> yabba dabba doo
> U(n  jv7s^&
> password
>
> Now suppose we are told "each line in users.list is one user, and each
> line in passwords.list is one password".
>
> Suppose we are told "there must be the same number of lines in both
> files".
>
> Suppose we are told "line N of users.list corresponds to line N of
> passwords.list".
>
> THEN you have enough information to actually write a program.
>
> What kind of array do you want?  Why do you even want an array?
>
> What is your program supposed to do with these users and passwords?
>
> Do you just need to create a single output file which combines them
> together?  In that case, you can read a line at a time from each
> file and never store them all in an array.  Just process sequentially.
>
> Do you need to create a lookup table that you will refer to again and
> again during some sort of GUI?  In that case, sure, an array might
> make sense.  But you still need to define what you're doing.  Are you
> planning to look up the password of a user GIVEN the user's name?
> Then use an associative array which is indexed by the user's name and
> contains the passwords.
>
> Do you plan to look up the user's name and password GIVEN an index
> number of some kind, perhaps chosen from a menu?  Then use two
> indexed arrays, one that maps the index number to the username, and
> the other that maps the index number to the password.
>
> Until we know what the input files contain, and what your program is
> supposed to do with them, nobody can tell you how to write your
> program.
>
> Start with these pages:
>
> http://mywiki.wooledge.org/BashGuide
> http://mywiki.wooledge.org/BashPitfalls
> http://mywiki.wooledge.org/BashFAQ/001
>
> Then, later, when you're ready:
>
> http://mywiki.wooledge.org/BashProgramming
>


Reply to: