cat output in the case of if else statement

The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP











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
    10 hours ago











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











  • 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
    9 hours ago






  • 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
    6 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
    10 hours ago











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











  • 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
    9 hours ago






  • 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
    6 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 10 hours ago





















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 10 hours ago









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
    10 hours ago











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











  • 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
    9 hours ago






  • 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
    6 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
    10 hours ago











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











  • 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
    9 hours ago






  • 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
    6 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
10 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
10 hours ago













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





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













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
9 hours ago




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
9 hours ago




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
6 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
6 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
      10 hours ago










    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 9 hours ago









        ilkkachu

        53.4k780146




        53.4k780146






















            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
              10 hours ago














            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
              10 hours ago












            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 10 hours ago









            Ipor Sircer

            9,94811023




            9,94811023







            • 2




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












            • 2




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







            2




            2




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




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










            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

            Peggy Mitchell

            Palaiologos

            The Forum (Inglewood, California)