1

So I'm trying to create a script to generate a random password with certain criteria, but for some reason some of my integer values aren't showing as such. Here is the script:

#!/bin/bash PASSWORDLENGTH= shuf -i 8-16 -n 1 RNDSOURCE=/dev/urandom L="acdefghjklmnopqrstuvwxyz" U="ABCDEFGHIJKLMNOPQRSTUVWXYZ" N="012345679" S='@#$%&*+-=' ALL="$L$U$N" function rndindex() { echo $(($RANDOM % ${#1})); } password="${L:$(rndindex $L):1}${U:$(rndindex $U):1}${N:$(rndindex $N):1}${S:$(rndindex $S):1}" password=$password${ALL:$(rndindex $S):1} while [ "${#password}" -lt "$PASSWORDLENGTH"" ] #Line 15 do password=$password${ALL:$(rndindex $ALL):1} done chars=$password password="" while [ "${#password}" -lt "$PASSWORDLENGTH"" ] #Line 22 do n=$(rndindex $chars) ch=${chars:$n:1} password="$password$ch" if [ $n = $(( ${#chars} - 1 )) ]; then chars="${chars:0:$n}" elif [ $n = 0 ]; then chars="${chars:1}" else chars="${chars:0:$n}${chars:$((n+1))}" fi done echo $password 

The error messages I'm getting are:

line 15: [: : integer expression expected

line 22: [: : integer expression expected

    1 Answer 1

    2

    Your 2nd line is wrong. It should be:

    PASSWORDLENGTH=$(shuf -i 8-16 -n 1) 

    and shrink double quotes "" to one " in line 15 & 22.

    ps.: use pwgen or apg, don't reinvent the wheel.

    1
    • I cannot use pwgen or apg for the purpose of the assignment because the distribution it will be tested on does not come with either by default, and my proff isn't willing to yum them onto it. Thanks for the reply!
      – DJatomiac
      CommentedOct 30, 2016 at 18:21

    You must log in to answer this question.

    Start asking to get answers

    Find the answer to your question by asking.

    Ask question

    Explore related questions

    See similar questions with these tags.