cat output in the case of if else statement











up vote
1
down vote

favorite












os_version=$(cat /etc/issue |grep Ubuntu)
if $os_version
then
echo found
else
echo notfound
fi


When I tried it on an Ubuntu machine it says
./test: line 2: Ubuntu: command not found
notfound



Can you please help me understand were I went wrong



This works for me, But I want to assign it to a variable



if cat /etc/issue |grep Ubuntu
then
echo found
else
echo notfound
fi









share|improve this question









New contributor




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




















  • What did you intend with the "if" test? By default, it expects to execute a command and test that return code, which is why it told you it tried to execute a command that started with "Ubuntu...". Are you interested in whether /etc/issue contains the word "Ubuntu" or are you trying to do something else?
    – Jeff Schaller
    yesterday












  • I am interested to know if /etc/issue contains Ubuntu,I would like to assign it to a variable and check
    – HistoriaReiss
    yesterday












  • If you want to know whether or not /etc/issue contains Ubuntu, why do you want to assign anything to a variable? Just check the status of grep.
    – William Pursell
    yesterday






  • 2




    Of course, if the "Ubuntu" in your login banner is coming from an S in /etc/issue, none of this will pick it up. (-:
    – JdeBP
    21 hours ago















up vote
1
down vote

favorite












os_version=$(cat /etc/issue |grep Ubuntu)
if $os_version
then
echo found
else
echo notfound
fi


When I tried it on an Ubuntu machine it says
./test: line 2: Ubuntu: command not found
notfound



Can you please help me understand were I went wrong



This works for me, But I want to assign it to a variable



if cat /etc/issue |grep Ubuntu
then
echo found
else
echo notfound
fi









share|improve this question









New contributor




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




















  • What did you intend with the "if" test? By default, it expects to execute a command and test that return code, which is why it told you it tried to execute a command that started with "Ubuntu...". Are you interested in whether /etc/issue contains the word "Ubuntu" or are you trying to do something else?
    – Jeff Schaller
    yesterday












  • I am interested to know if /etc/issue contains Ubuntu,I would like to assign it to a variable and check
    – HistoriaReiss
    yesterday












  • If you want to know whether or not /etc/issue contains Ubuntu, why do you want to assign anything to a variable? Just check the status of grep.
    – William Pursell
    yesterday






  • 2




    Of course, if the "Ubuntu" in your login banner is coming from an S in /etc/issue, none of this will pick it up. (-:
    – JdeBP
    21 hours ago













up vote
1
down vote

favorite









up vote
1
down vote

favorite











os_version=$(cat /etc/issue |grep Ubuntu)
if $os_version
then
echo found
else
echo notfound
fi


When I tried it on an Ubuntu machine it says
./test: line 2: Ubuntu: command not found
notfound



Can you please help me understand were I went wrong



This works for me, But I want to assign it to a variable



if cat /etc/issue |grep Ubuntu
then
echo found
else
echo notfound
fi









share|improve this question









New contributor




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











os_version=$(cat /etc/issue |grep Ubuntu)
if $os_version
then
echo found
else
echo notfound
fi


When I tried it on an Ubuntu machine it says
./test: line 2: Ubuntu: command not found
notfound



Can you please help me understand were I went wrong



This works for me, But I want to assign it to a variable



if cat /etc/issue |grep Ubuntu
then
echo found
else
echo notfound
fi






shell-script shell






share|improve this question









New contributor




HistoriaReiss 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




HistoriaReiss 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 yesterday





















New contributor




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









asked yesterday









HistoriaReiss

92




92




New contributor




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





New contributor





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






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












  • What did you intend with the "if" test? By default, it expects to execute a command and test that return code, which is why it told you it tried to execute a command that started with "Ubuntu...". Are you interested in whether /etc/issue contains the word "Ubuntu" or are you trying to do something else?
    – Jeff Schaller
    yesterday












  • I am interested to know if /etc/issue contains Ubuntu,I would like to assign it to a variable and check
    – HistoriaReiss
    yesterday












  • If you want to know whether or not /etc/issue contains Ubuntu, why do you want to assign anything to a variable? Just check the status of grep.
    – William Pursell
    yesterday






  • 2




    Of course, if the "Ubuntu" in your login banner is coming from an S in /etc/issue, none of this will pick it up. (-:
    – JdeBP
    21 hours ago


















  • What did you intend with the "if" test? By default, it expects to execute a command and test that return code, which is why it told you it tried to execute a command that started with "Ubuntu...". Are you interested in whether /etc/issue contains the word "Ubuntu" or are you trying to do something else?
    – Jeff Schaller
    yesterday












  • I am interested to know if /etc/issue contains Ubuntu,I would like to assign it to a variable and check
    – HistoriaReiss
    yesterday












  • If you want to know whether or not /etc/issue contains Ubuntu, why do you want to assign anything to a variable? Just check the status of grep.
    – William Pursell
    yesterday






  • 2




    Of course, if the "Ubuntu" in your login banner is coming from an S in /etc/issue, none of this will pick it up. (-:
    – JdeBP
    21 hours ago
















What did you intend with the "if" test? By default, it expects to execute a command and test that return code, which is why it told you it tried to execute a command that started with "Ubuntu...". Are you interested in whether /etc/issue contains the word "Ubuntu" or are you trying to do something else?
– Jeff Schaller
yesterday






What did you intend with the "if" test? By default, it expects to execute a command and test that return code, which is why it told you it tried to execute a command that started with "Ubuntu...". Are you interested in whether /etc/issue contains the word "Ubuntu" or are you trying to do something else?
– Jeff Schaller
yesterday














I am interested to know if /etc/issue contains Ubuntu,I would like to assign it to a variable and check
– HistoriaReiss
yesterday






I am interested to know if /etc/issue contains Ubuntu,I would like to assign it to a variable and check
– HistoriaReiss
yesterday














If you want to know whether or not /etc/issue contains Ubuntu, why do you want to assign anything to a variable? Just check the status of grep.
– William Pursell
yesterday




If you want to know whether or not /etc/issue contains Ubuntu, why do you want to assign anything to a variable? Just check the status of grep.
– William Pursell
yesterday




2




2




Of course, if the "Ubuntu" in your login banner is coming from an S in /etc/issue, none of this will pick it up. (-:
– JdeBP
21 hours ago




Of course, if the "Ubuntu" in your login banner is coming from an S in /etc/issue, none of this will pick it up. (-:
– JdeBP
21 hours ago










2 Answers
2






active

oldest

votes

















up vote
7
down vote













The if statement runs a command, and checks its exit status.
Using $os_version as a command works by expanding it, and running the resulting command line. So if the variable contains Ubuntu 18.04.1 LTS n l, it'll try to to run a command called Ubuntu with the arguments 18.04.1, LTS, etc.



You probably want to use



if [ -n "$os_version" ]; then
...
fi


to check if the variable is empty or not ([ -n "$var" ] is true if it's not empty, while [ -z "$var" ] if the variable is empty).



Alternatively, you could use the grep within the if statement itself as you did in the edit, and set a variable there:



distro=unknown
if grep -q Ubuntu < /etc/issue; then
distro=ubuntu
fi
# ... later
if [ "$distro" = ubuntu ]; then
# do something Ubuntu-specific
fi





share|improve this answer




























    up vote
    3
    down vote













    grep -q Ubuntu /etc/issue && echo found || echo not found





    share|improve this answer

















    • 2




      See also case $(lsb_release -si) in (Ubuntu) ...;; (Debian) ...; esac
      – Stéphane Chazelas
      yesterday











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


    }
    });






    HistoriaReiss 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%2f481249%2fcat-output-in-the-case-of-if-else-statement%23new-answer', 'question_page');
    }
    );

    Post as a guest
































    2 Answers
    2






    active

    oldest

    votes








    2 Answers
    2






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes








    up vote
    7
    down vote













    The if statement runs a command, and checks its exit status.
    Using $os_version as a command works by expanding it, and running the resulting command line. So if the variable contains Ubuntu 18.04.1 LTS n l, it'll try to to run a command called Ubuntu with the arguments 18.04.1, LTS, etc.



    You probably want to use



    if [ -n "$os_version" ]; then
    ...
    fi


    to check if the variable is empty or not ([ -n "$var" ] is true if it's not empty, while [ -z "$var" ] if the variable is empty).



    Alternatively, you could use the grep within the if statement itself as you did in the edit, and set a variable there:



    distro=unknown
    if grep -q Ubuntu < /etc/issue; then
    distro=ubuntu
    fi
    # ... later
    if [ "$distro" = ubuntu ]; then
    # do something Ubuntu-specific
    fi





    share|improve this answer

























      up vote
      7
      down vote













      The if statement runs a command, and checks its exit status.
      Using $os_version as a command works by expanding it, and running the resulting command line. So if the variable contains Ubuntu 18.04.1 LTS n l, it'll try to to run a command called Ubuntu with the arguments 18.04.1, LTS, etc.



      You probably want to use



      if [ -n "$os_version" ]; then
      ...
      fi


      to check if the variable is empty or not ([ -n "$var" ] is true if it's not empty, while [ -z "$var" ] if the variable is empty).



      Alternatively, you could use the grep within the if statement itself as you did in the edit, and set a variable there:



      distro=unknown
      if grep -q Ubuntu < /etc/issue; then
      distro=ubuntu
      fi
      # ... later
      if [ "$distro" = ubuntu ]; then
      # do something Ubuntu-specific
      fi





      share|improve this answer























        up vote
        7
        down vote










        up vote
        7
        down vote









        The if statement runs a command, and checks its exit status.
        Using $os_version as a command works by expanding it, and running the resulting command line. So if the variable contains Ubuntu 18.04.1 LTS n l, it'll try to to run a command called Ubuntu with the arguments 18.04.1, LTS, etc.



        You probably want to use



        if [ -n "$os_version" ]; then
        ...
        fi


        to check if the variable is empty or not ([ -n "$var" ] is true if it's not empty, while [ -z "$var" ] if the variable is empty).



        Alternatively, you could use the grep within the if statement itself as you did in the edit, and set a variable there:



        distro=unknown
        if grep -q Ubuntu < /etc/issue; then
        distro=ubuntu
        fi
        # ... later
        if [ "$distro" = ubuntu ]; then
        # do something Ubuntu-specific
        fi





        share|improve this answer












        The if statement runs a command, and checks its exit status.
        Using $os_version as a command works by expanding it, and running the resulting command line. So if the variable contains Ubuntu 18.04.1 LTS n l, it'll try to to run a command called Ubuntu with the arguments 18.04.1, LTS, etc.



        You probably want to use



        if [ -n "$os_version" ]; then
        ...
        fi


        to check if the variable is empty or not ([ -n "$var" ] is true if it's not empty, while [ -z "$var" ] if the variable is empty).



        Alternatively, you could use the grep within the if statement itself as you did in the edit, and set a variable there:



        distro=unknown
        if grep -q Ubuntu < /etc/issue; then
        distro=ubuntu
        fi
        # ... later
        if [ "$distro" = ubuntu ]; then
        # do something Ubuntu-specific
        fi






        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered yesterday









        ilkkachu

        53.4k781146




        53.4k781146
























            up vote
            3
            down vote













            grep -q Ubuntu /etc/issue && echo found || echo not found





            share|improve this answer

















            • 2




              See also case $(lsb_release -si) in (Ubuntu) ...;; (Debian) ...; esac
              – Stéphane Chazelas
              yesterday















            up vote
            3
            down vote













            grep -q Ubuntu /etc/issue && echo found || echo not found





            share|improve this answer

















            • 2




              See also case $(lsb_release -si) in (Ubuntu) ...;; (Debian) ...; esac
              – Stéphane Chazelas
              yesterday













            up vote
            3
            down vote










            up vote
            3
            down vote









            grep -q Ubuntu /etc/issue && echo found || echo not found





            share|improve this answer












            grep -q Ubuntu /etc/issue && echo found || echo not found






            share|improve this answer












            share|improve this answer



            share|improve this answer










            answered yesterday









            Ipor Sircer

            9,96311023




            9,96311023








            • 2




              See also case $(lsb_release -si) in (Ubuntu) ...;; (Debian) ...; esac
              – Stéphane Chazelas
              yesterday














            • 2




              See also case $(lsb_release -si) in (Ubuntu) ...;; (Debian) ...; esac
              – Stéphane Chazelas
              yesterday








            2




            2




            See also case $(lsb_release -si) in (Ubuntu) ...;; (Debian) ...; esac
            – Stéphane Chazelas
            yesterday




            See also case $(lsb_release -si) in (Ubuntu) ...;; (Debian) ...; esac
            – Stéphane Chazelas
            yesterday










            HistoriaReiss is a new contributor. Be nice, and check out our Code of Conduct.










             

            draft saved


            draft discarded


















            HistoriaReiss is a new contributor. Be nice, and check out our Code of Conduct.













            HistoriaReiss is a new contributor. Be nice, and check out our Code of Conduct.












            HistoriaReiss 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%2f481249%2fcat-output-in-the-case-of-if-else-statement%23new-answer', 'question_page');
            }
            );

            Post as a guest




















































































            Popular posts from this blog

            How to change which sound is reproduced for terminal bell?

            Can I use Tabulator js library in my java Spring + Thymeleaf project?

            Title Spacing in Bjornstrup Chapter, Removing Chapter Number From Contents