Error [: -lt: unary operator expected in shell script Linux












1















I get error [: -lt: unary operator expected after run below script, anyone can share ideas?



temp=0
while [ $temp -lt 25 ]
do
sleep 1
echo "running.."

if [ $temp -eq 5 ]
then
top -bc -d 5 -n 1|sed -n '7,8p'|awk '{print $1,$9}'>>out.txt
temp=`expr $temp +1`
break
elif [ $temp -eq 20 ]
then
top -bc -d 5 -n 1|sed -n '7,8p'|awk '{print $1,$9}'>>out.txt
temp=`expr $temp +1`
else
temp=`expr $temp +1`
fi
done









share|improve this question









New contributor




Shi Jie Tio is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
















  • 1





    Do you also get errors from expr?

    – Michael Homer
    3 hours ago











  • no error shown on expr

    – Shi Jie Tio
    2 hours ago











  • Use More Quotes™

    – l0b0
    2 hours ago
















1















I get error [: -lt: unary operator expected after run below script, anyone can share ideas?



temp=0
while [ $temp -lt 25 ]
do
sleep 1
echo "running.."

if [ $temp -eq 5 ]
then
top -bc -d 5 -n 1|sed -n '7,8p'|awk '{print $1,$9}'>>out.txt
temp=`expr $temp +1`
break
elif [ $temp -eq 20 ]
then
top -bc -d 5 -n 1|sed -n '7,8p'|awk '{print $1,$9}'>>out.txt
temp=`expr $temp +1`
else
temp=`expr $temp +1`
fi
done









share|improve this question









New contributor




Shi Jie Tio is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
















  • 1





    Do you also get errors from expr?

    – Michael Homer
    3 hours ago











  • no error shown on expr

    – Shi Jie Tio
    2 hours ago











  • Use More Quotes™

    – l0b0
    2 hours ago














1












1








1








I get error [: -lt: unary operator expected after run below script, anyone can share ideas?



temp=0
while [ $temp -lt 25 ]
do
sleep 1
echo "running.."

if [ $temp -eq 5 ]
then
top -bc -d 5 -n 1|sed -n '7,8p'|awk '{print $1,$9}'>>out.txt
temp=`expr $temp +1`
break
elif [ $temp -eq 20 ]
then
top -bc -d 5 -n 1|sed -n '7,8p'|awk '{print $1,$9}'>>out.txt
temp=`expr $temp +1`
else
temp=`expr $temp +1`
fi
done









share|improve this question









New contributor




Shi Jie Tio is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.












I get error [: -lt: unary operator expected after run below script, anyone can share ideas?



temp=0
while [ $temp -lt 25 ]
do
sleep 1
echo "running.."

if [ $temp -eq 5 ]
then
top -bc -d 5 -n 1|sed -n '7,8p'|awk '{print $1,$9}'>>out.txt
temp=`expr $temp +1`
break
elif [ $temp -eq 20 ]
then
top -bc -d 5 -n 1|sed -n '7,8p'|awk '{print $1,$9}'>>out.txt
temp=`expr $temp +1`
else
temp=`expr $temp +1`
fi
done






linux shell-script test






share|improve this question









New contributor




Shi Jie Tio is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.











share|improve this question









New contributor




Shi Jie Tio is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









share|improve this question




share|improve this question








edited 3 hours ago









Jeff Schaller

39.3k1054125




39.3k1054125






New contributor




Shi Jie Tio is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









asked 3 hours ago









Shi Jie TioShi Jie Tio

1113




1113




New contributor




Shi Jie Tio is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.





New contributor





Shi Jie Tio is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.






Shi Jie Tio is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.








  • 1





    Do you also get errors from expr?

    – Michael Homer
    3 hours ago











  • no error shown on expr

    – Shi Jie Tio
    2 hours ago











  • Use More Quotes™

    – l0b0
    2 hours ago














  • 1





    Do you also get errors from expr?

    – Michael Homer
    3 hours ago











  • no error shown on expr

    – Shi Jie Tio
    2 hours ago











  • Use More Quotes™

    – l0b0
    2 hours ago








1




1





Do you also get errors from expr?

– Michael Homer
3 hours ago





Do you also get errors from expr?

– Michael Homer
3 hours ago













no error shown on expr

– Shi Jie Tio
2 hours ago





no error shown on expr

– Shi Jie Tio
2 hours ago













Use More Quotes™

– l0b0
2 hours ago





Use More Quotes™

– l0b0
2 hours ago










1 Answer
1






active

oldest

votes


















3














Try changing all the +1s after the exprs to + 1.



Without the space expr will return an error and $temp will be empty. If $temp is empty, then the -lt will be comparing a blank space to a number, which is why the error appears. Here's a one liner that reproduces the problem:



t=0;t=`expr $t +1`;[ $t -lt 25 ]


Output (to STDERR):



expr: syntax error
bash: [: -lt: unary operator expected


Better yet, change all code that uses the external util expr to use the shell's own internal arithmetic expansion. So code like this:



temp=`expr $temp +1`


...should be changed to:



temp=$(($temp + 1))





share|improve this answer

























    Your Answer








    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "106"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: false,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: null,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });






    Shi Jie Tio is a new contributor. Be nice, and check out our Code of Conduct.










    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f494333%2ferror-lt-unary-operator-expected-in-shell-script-linux%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    3














    Try changing all the +1s after the exprs to + 1.



    Without the space expr will return an error and $temp will be empty. If $temp is empty, then the -lt will be comparing a blank space to a number, which is why the error appears. Here's a one liner that reproduces the problem:



    t=0;t=`expr $t +1`;[ $t -lt 25 ]


    Output (to STDERR):



    expr: syntax error
    bash: [: -lt: unary operator expected


    Better yet, change all code that uses the external util expr to use the shell's own internal arithmetic expansion. So code like this:



    temp=`expr $temp +1`


    ...should be changed to:



    temp=$(($temp + 1))





    share|improve this answer






























      3














      Try changing all the +1s after the exprs to + 1.



      Without the space expr will return an error and $temp will be empty. If $temp is empty, then the -lt will be comparing a blank space to a number, which is why the error appears. Here's a one liner that reproduces the problem:



      t=0;t=`expr $t +1`;[ $t -lt 25 ]


      Output (to STDERR):



      expr: syntax error
      bash: [: -lt: unary operator expected


      Better yet, change all code that uses the external util expr to use the shell's own internal arithmetic expansion. So code like this:



      temp=`expr $temp +1`


      ...should be changed to:



      temp=$(($temp + 1))





      share|improve this answer




























        3












        3








        3







        Try changing all the +1s after the exprs to + 1.



        Without the space expr will return an error and $temp will be empty. If $temp is empty, then the -lt will be comparing a blank space to a number, which is why the error appears. Here's a one liner that reproduces the problem:



        t=0;t=`expr $t +1`;[ $t -lt 25 ]


        Output (to STDERR):



        expr: syntax error
        bash: [: -lt: unary operator expected


        Better yet, change all code that uses the external util expr to use the shell's own internal arithmetic expansion. So code like this:



        temp=`expr $temp +1`


        ...should be changed to:



        temp=$(($temp + 1))





        share|improve this answer















        Try changing all the +1s after the exprs to + 1.



        Without the space expr will return an error and $temp will be empty. If $temp is empty, then the -lt will be comparing a blank space to a number, which is why the error appears. Here's a one liner that reproduces the problem:



        t=0;t=`expr $t +1`;[ $t -lt 25 ]


        Output (to STDERR):



        expr: syntax error
        bash: [: -lt: unary operator expected


        Better yet, change all code that uses the external util expr to use the shell's own internal arithmetic expansion. So code like this:



        temp=`expr $temp +1`


        ...should be changed to:



        temp=$(($temp + 1))






        share|improve this answer














        share|improve this answer



        share|improve this answer








        edited 2 hours ago

























        answered 3 hours ago









        agcagc

        4,49311036




        4,49311036






















            Shi Jie Tio is a new contributor. Be nice, and check out our Code of Conduct.










            draft saved

            draft discarded


















            Shi Jie Tio is a new contributor. Be nice, and check out our Code of Conduct.













            Shi Jie Tio is a new contributor. Be nice, and check out our Code of Conduct.












            Shi Jie Tio is a new contributor. Be nice, and check out our Code of Conduct.
















            Thanks for contributing an answer to Unix & Linux Stack Exchange!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f494333%2ferror-lt-unary-operator-expected-in-shell-script-linux%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            What other Star Trek series did the main TNG cast show up in?

            Berlina muro

            Berlina aerponto