2017-10-05 18 views
1

shell script으로 코드를 작성하는 데있어 완전히 익숙합니다.배시 셸 스크립트 오류 : 모호한 리디렉션 및 단항 연산자가 필요합니다.

이 내 코드입니다 :

#!/bin/bash 
echo -n "Output to $2 " 
# set counter 
count=1 
# zap output file 
> $2 
# Loop 
while [ $count -le $1 ] 
do 
    # generate some random text 
    randomnumber=`od -A n -t d -N 1 /dev/urandom` 
    randomtext=`cat /dev/urandom | tr -cd "[:alnum:]" | head -c $randomnumber` 
    # generate a random number 
    randomnumber=`od -A n -t d -N 1 /dev/urandom` 
    # output to file 
    echo "$count,$randomtext,$randomnumber" | sed -e "s: *::g" >> $2 
    # increment counter 
    count=$(($count + 1)) 
    if [ $(($count % 500)) -eq 0 ] 
    then 
echo -n "." fi 
done 
echo " Output complete" 

그리고 이것은 내 오류입니다 :

Line 2: ambiguous redirect and Line 14: unary operator expected. 

아무도 내가 그 오류를 가지고 왜 나를 이해하는 데 도움이 수 있습니까?

+1

줄 번호가 코드와 일치하지 않습니다. 수정 해주세요. –

+1

사용자 입력의 유효성을 검사해야합니다. 2 가지 주장이 제공 되었습니까? –

+1

[bash/POSIX 쉘에서 변수를 인용하는 것을 잊어 버렸을 때의 보안상의 의미] (https://unix.stackexchange.com/q/171346/4667) –

답변

1

@GlennJackman가 지적 하듯이, 선, 그러므로 나는이 다음 추측하고, 코드를 일치되지 않습니다

  • 모호한 리디렉션은 6 행에 : 파일을 절단하려면 truncate -s0 $2
  • 을 사용해야합니다 단항 연산자 오류에 대한
  • , 나는 21 행에 내기 : 중 라인 피드 또는 다음을 시도 fi

전에 세미콜론 ;을 넣어 :

#!/bin/bash 
echo -n "Output to $2 " 
# set counter 
count=1 
# zap output file 
truncate -s0 $2 
# Loop 
while [ $count -le $1 ] 
do 
    # generate some random text 
    randomnumber=`od -A n -t d -N 1 /dev/urandom` 
    randomtext=`cat /dev/urandom | tr -cd "[:alnum:]" | head -c $randomnumber` 
    # generate a random number 
    randomnumber=`od -A n -t d -N 1 /dev/urandom` 
    # output to file 
    echo "$count,$randomtext,$randomnumber" | sed -e "s: *::g" >> $2 
    # increment counter 
    count=$(($count + 1)) 
    if [ $(($count % 500)) -eq 0 ] 
    then 
     echo -n "." 
    fi 
done 
echo " Output complete"