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

            Biblatex bibliography style without URLs when DOI exists (in Overleaf with Zotero bibliography)

            ComboBox Display Member on multiple fields

            Is it possible to collect Nectar points via Trainline?