Finding the Percentage from a grep variable












0














I want to display the calculation of the CPU load in percentage.



num2=$(uptime | grep "average:" | tr -d " " | cut -d ':' -f 5 | cut -d ',' -f 2)

percent=$((num2(*100)))
echo 'CPU percentage' $percent


Am I missing something?










share|improve this question
























  • Is that an actual typo of (*100) or a copy/paste typo?
    – Jeff Schaller
    Dec 28 '18 at 19:03










  • Nope that's what I think how it should be.
    – User101
    Dec 28 '18 at 19:08






  • 1




    bash arithmetic uses infix notation, so you'd need $((num2 * 100)), if that's all that's stopping you
    – Jeff Schaller
    Dec 28 '18 at 19:10










  • it always shows up a syntax error: invalid arithmetic operator (error token is ".01")
    – User101
    Dec 28 '18 at 19:25










  • That seems like an awfully long pipeline - at least on Linux, you might want to look at reading the value more directly from /proc/loadavg e.g. awk '{print "CPU percentage " $2*100}' < /proc/loadavg
    – steeldriver
    Dec 28 '18 at 19:26
















0














I want to display the calculation of the CPU load in percentage.



num2=$(uptime | grep "average:" | tr -d " " | cut -d ':' -f 5 | cut -d ',' -f 2)

percent=$((num2(*100)))
echo 'CPU percentage' $percent


Am I missing something?










share|improve this question
























  • Is that an actual typo of (*100) or a copy/paste typo?
    – Jeff Schaller
    Dec 28 '18 at 19:03










  • Nope that's what I think how it should be.
    – User101
    Dec 28 '18 at 19:08






  • 1




    bash arithmetic uses infix notation, so you'd need $((num2 * 100)), if that's all that's stopping you
    – Jeff Schaller
    Dec 28 '18 at 19:10










  • it always shows up a syntax error: invalid arithmetic operator (error token is ".01")
    – User101
    Dec 28 '18 at 19:25










  • That seems like an awfully long pipeline - at least on Linux, you might want to look at reading the value more directly from /proc/loadavg e.g. awk '{print "CPU percentage " $2*100}' < /proc/loadavg
    – steeldriver
    Dec 28 '18 at 19:26














0












0








0







I want to display the calculation of the CPU load in percentage.



num2=$(uptime | grep "average:" | tr -d " " | cut -d ':' -f 5 | cut -d ',' -f 2)

percent=$((num2(*100)))
echo 'CPU percentage' $percent


Am I missing something?










share|improve this question















I want to display the calculation of the CPU load in percentage.



num2=$(uptime | grep "average:" | tr -d " " | cut -d ':' -f 5 | cut -d ',' -f 2)

percent=$((num2(*100)))
echo 'CPU percentage' $percent


Am I missing something?







shell-script variable uptime






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Dec 28 '18 at 19:03









Jeff Schaller

39k1054125




39k1054125










asked Dec 28 '18 at 19:01









User101User101

584




584












  • Is that an actual typo of (*100) or a copy/paste typo?
    – Jeff Schaller
    Dec 28 '18 at 19:03










  • Nope that's what I think how it should be.
    – User101
    Dec 28 '18 at 19:08






  • 1




    bash arithmetic uses infix notation, so you'd need $((num2 * 100)), if that's all that's stopping you
    – Jeff Schaller
    Dec 28 '18 at 19:10










  • it always shows up a syntax error: invalid arithmetic operator (error token is ".01")
    – User101
    Dec 28 '18 at 19:25










  • That seems like an awfully long pipeline - at least on Linux, you might want to look at reading the value more directly from /proc/loadavg e.g. awk '{print "CPU percentage " $2*100}' < /proc/loadavg
    – steeldriver
    Dec 28 '18 at 19:26


















  • Is that an actual typo of (*100) or a copy/paste typo?
    – Jeff Schaller
    Dec 28 '18 at 19:03










  • Nope that's what I think how it should be.
    – User101
    Dec 28 '18 at 19:08






  • 1




    bash arithmetic uses infix notation, so you'd need $((num2 * 100)), if that's all that's stopping you
    – Jeff Schaller
    Dec 28 '18 at 19:10










  • it always shows up a syntax error: invalid arithmetic operator (error token is ".01")
    – User101
    Dec 28 '18 at 19:25










  • That seems like an awfully long pipeline - at least on Linux, you might want to look at reading the value more directly from /proc/loadavg e.g. awk '{print "CPU percentage " $2*100}' < /proc/loadavg
    – steeldriver
    Dec 28 '18 at 19:26
















Is that an actual typo of (*100) or a copy/paste typo?
– Jeff Schaller
Dec 28 '18 at 19:03




Is that an actual typo of (*100) or a copy/paste typo?
– Jeff Schaller
Dec 28 '18 at 19:03












Nope that's what I think how it should be.
– User101
Dec 28 '18 at 19:08




Nope that's what I think how it should be.
– User101
Dec 28 '18 at 19:08




1




1




bash arithmetic uses infix notation, so you'd need $((num2 * 100)), if that's all that's stopping you
– Jeff Schaller
Dec 28 '18 at 19:10




bash arithmetic uses infix notation, so you'd need $((num2 * 100)), if that's all that's stopping you
– Jeff Schaller
Dec 28 '18 at 19:10












it always shows up a syntax error: invalid arithmetic operator (error token is ".01")
– User101
Dec 28 '18 at 19:25




it always shows up a syntax error: invalid arithmetic operator (error token is ".01")
– User101
Dec 28 '18 at 19:25












That seems like an awfully long pipeline - at least on Linux, you might want to look at reading the value more directly from /proc/loadavg e.g. awk '{print "CPU percentage " $2*100}' < /proc/loadavg
– steeldriver
Dec 28 '18 at 19:26




That seems like an awfully long pipeline - at least on Linux, you might want to look at reading the value more directly from /proc/loadavg e.g. awk '{print "CPU percentage " $2*100}' < /proc/loadavg
– steeldriver
Dec 28 '18 at 19:26










2 Answers
2






active

oldest

votes


















0














You can pipe your calculation for percent into bc.



percent=$(echo "scale=0;$num2*100" | bc)


It'll give you a number like "41.00" you can cut that off the end with



percent=${percent%.*}





share|improve this answer





























    0














    Your num2 value will be something like 0.41. bash can do integer calculations only, no floating. That's why we get an eror msg like



    bash: 0.41 * 100 : syntax error: invalid arithmetic operator (error token is ".41 * 100 ")


    Try removing the dots when using your tr -d statement. That would be equivalent to a multiplication by 100.






    share|improve this answer























    • This should be a comment. An answer should explain how to solve the problem, not just the reason for the error.
      – Barmar
      Dec 28 '18 at 23:46










    • Thanks, @Barmar. Added a proposal to circumnavigate the error.
      – RudiC
      Dec 29 '18 at 8:44










    • What dots in the tr -d command? Show the command he should be writing instead.
      – Barmar
      Dec 30 '18 at 4:37











    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
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f491358%2ffinding-the-percentage-from-a-grep-variable%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    2 Answers
    2






    active

    oldest

    votes








    2 Answers
    2






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    0














    You can pipe your calculation for percent into bc.



    percent=$(echo "scale=0;$num2*100" | bc)


    It'll give you a number like "41.00" you can cut that off the end with



    percent=${percent%.*}





    share|improve this answer


























      0














      You can pipe your calculation for percent into bc.



      percent=$(echo "scale=0;$num2*100" | bc)


      It'll give you a number like "41.00" you can cut that off the end with



      percent=${percent%.*}





      share|improve this answer
























        0












        0








        0






        You can pipe your calculation for percent into bc.



        percent=$(echo "scale=0;$num2*100" | bc)


        It'll give you a number like "41.00" you can cut that off the end with



        percent=${percent%.*}





        share|improve this answer












        You can pipe your calculation for percent into bc.



        percent=$(echo "scale=0;$num2*100" | bc)


        It'll give you a number like "41.00" you can cut that off the end with



        percent=${percent%.*}






        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Dec 28 '18 at 23:06









        user208145user208145

        1,27121215




        1,27121215

























            0














            Your num2 value will be something like 0.41. bash can do integer calculations only, no floating. That's why we get an eror msg like



            bash: 0.41 * 100 : syntax error: invalid arithmetic operator (error token is ".41 * 100 ")


            Try removing the dots when using your tr -d statement. That would be equivalent to a multiplication by 100.






            share|improve this answer























            • This should be a comment. An answer should explain how to solve the problem, not just the reason for the error.
              – Barmar
              Dec 28 '18 at 23:46










            • Thanks, @Barmar. Added a proposal to circumnavigate the error.
              – RudiC
              Dec 29 '18 at 8:44










            • What dots in the tr -d command? Show the command he should be writing instead.
              – Barmar
              Dec 30 '18 at 4:37
















            0














            Your num2 value will be something like 0.41. bash can do integer calculations only, no floating. That's why we get an eror msg like



            bash: 0.41 * 100 : syntax error: invalid arithmetic operator (error token is ".41 * 100 ")


            Try removing the dots when using your tr -d statement. That would be equivalent to a multiplication by 100.






            share|improve this answer























            • This should be a comment. An answer should explain how to solve the problem, not just the reason for the error.
              – Barmar
              Dec 28 '18 at 23:46










            • Thanks, @Barmar. Added a proposal to circumnavigate the error.
              – RudiC
              Dec 29 '18 at 8:44










            • What dots in the tr -d command? Show the command he should be writing instead.
              – Barmar
              Dec 30 '18 at 4:37














            0












            0








            0






            Your num2 value will be something like 0.41. bash can do integer calculations only, no floating. That's why we get an eror msg like



            bash: 0.41 * 100 : syntax error: invalid arithmetic operator (error token is ".41 * 100 ")


            Try removing the dots when using your tr -d statement. That would be equivalent to a multiplication by 100.






            share|improve this answer














            Your num2 value will be something like 0.41. bash can do integer calculations only, no floating. That's why we get an eror msg like



            bash: 0.41 * 100 : syntax error: invalid arithmetic operator (error token is ".41 * 100 ")


            Try removing the dots when using your tr -d statement. That would be equivalent to a multiplication by 100.







            share|improve this answer














            share|improve this answer



            share|improve this answer








            edited Dec 29 '18 at 8:44

























            answered Dec 28 '18 at 21:42









            RudiCRudiC

            4,2191312




            4,2191312












            • This should be a comment. An answer should explain how to solve the problem, not just the reason for the error.
              – Barmar
              Dec 28 '18 at 23:46










            • Thanks, @Barmar. Added a proposal to circumnavigate the error.
              – RudiC
              Dec 29 '18 at 8:44










            • What dots in the tr -d command? Show the command he should be writing instead.
              – Barmar
              Dec 30 '18 at 4:37


















            • This should be a comment. An answer should explain how to solve the problem, not just the reason for the error.
              – Barmar
              Dec 28 '18 at 23:46










            • Thanks, @Barmar. Added a proposal to circumnavigate the error.
              – RudiC
              Dec 29 '18 at 8:44










            • What dots in the tr -d command? Show the command he should be writing instead.
              – Barmar
              Dec 30 '18 at 4:37
















            This should be a comment. An answer should explain how to solve the problem, not just the reason for the error.
            – Barmar
            Dec 28 '18 at 23:46




            This should be a comment. An answer should explain how to solve the problem, not just the reason for the error.
            – Barmar
            Dec 28 '18 at 23:46












            Thanks, @Barmar. Added a proposal to circumnavigate the error.
            – RudiC
            Dec 29 '18 at 8:44




            Thanks, @Barmar. Added a proposal to circumnavigate the error.
            – RudiC
            Dec 29 '18 at 8:44












            What dots in the tr -d command? Show the command he should be writing instead.
            – Barmar
            Dec 30 '18 at 4:37




            What dots in the tr -d command? Show the command he should be writing instead.
            – Barmar
            Dec 30 '18 at 4:37


















            draft saved

            draft discarded




















































            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.





            Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


            Please pay close attention to the following guidance:


            • 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%2f491358%2ffinding-the-percentage-from-a-grep-variable%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

            Morgemoulin

            Scott Moir

            Souastre