Unable to print * (star) value with echo











up vote
0
down vote

favorite












I have,



my.sh



while IFS= read -r line ; do
v1="$line";
t1=`echo $line | awk -F= '{print $2}'`
echo "$t1"
done < $1


sample.txt



say=hello
test=0 0/15 * * * ?
logs=valuelogs


Output :



[root@centos gen]# ./my.sh test.txt
hello
0 0/15 hello.txt 2.txt tmp.log my.sh sample.txt test.sh test.txt hello.txt
2.txt tmp.log my.sh sample.txt test.sh test.txt hello.txt 2.txt tmp.log
my.sh sample.txt test.sh test.txt ?
valuelogs


Here we get bad output due to executed command like echo * & its give list of file on current directory as output.



Is there any alternative solution for same ?










share|improve this question






















  • Related: When is double-quoting necessary?
    – Kusalananda
    yesterday















up vote
0
down vote

favorite












I have,



my.sh



while IFS= read -r line ; do
v1="$line";
t1=`echo $line | awk -F= '{print $2}'`
echo "$t1"
done < $1


sample.txt



say=hello
test=0 0/15 * * * ?
logs=valuelogs


Output :



[root@centos gen]# ./my.sh test.txt
hello
0 0/15 hello.txt 2.txt tmp.log my.sh sample.txt test.sh test.txt hello.txt
2.txt tmp.log my.sh sample.txt test.sh test.txt hello.txt 2.txt tmp.log
my.sh sample.txt test.sh test.txt ?
valuelogs


Here we get bad output due to executed command like echo * & its give list of file on current directory as output.



Is there any alternative solution for same ?










share|improve this question






















  • Related: When is double-quoting necessary?
    – Kusalananda
    yesterday













up vote
0
down vote

favorite









up vote
0
down vote

favorite











I have,



my.sh



while IFS= read -r line ; do
v1="$line";
t1=`echo $line | awk -F= '{print $2}'`
echo "$t1"
done < $1


sample.txt



say=hello
test=0 0/15 * * * ?
logs=valuelogs


Output :



[root@centos gen]# ./my.sh test.txt
hello
0 0/15 hello.txt 2.txt tmp.log my.sh sample.txt test.sh test.txt hello.txt
2.txt tmp.log my.sh sample.txt test.sh test.txt hello.txt 2.txt tmp.log
my.sh sample.txt test.sh test.txt ?
valuelogs


Here we get bad output due to executed command like echo * & its give list of file on current directory as output.



Is there any alternative solution for same ?










share|improve this question













I have,



my.sh



while IFS= read -r line ; do
v1="$line";
t1=`echo $line | awk -F= '{print $2}'`
echo "$t1"
done < $1


sample.txt



say=hello
test=0 0/15 * * * ?
logs=valuelogs


Output :



[root@centos gen]# ./my.sh test.txt
hello
0 0/15 hello.txt 2.txt tmp.log my.sh sample.txt test.sh test.txt hello.txt
2.txt tmp.log my.sh sample.txt test.sh test.txt hello.txt 2.txt tmp.log
my.sh sample.txt test.sh test.txt ?
valuelogs


Here we get bad output due to executed command like echo * & its give list of file on current directory as output.



Is there any alternative solution for same ?







linux bash shell-script centos






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked yesterday









Nullpointer

2571416




2571416












  • Related: When is double-quoting necessary?
    – Kusalananda
    yesterday


















  • Related: When is double-quoting necessary?
    – Kusalananda
    yesterday
















Related: When is double-quoting necessary?
– Kusalananda
yesterday




Related: When is double-quoting necessary?
– Kusalananda
yesterday










2 Answers
2






active

oldest

votes

















up vote
3
down vote



accepted










The problem is in the echo $line inside the back quotes. Double quote the variable to prevent wildcard expansion:



t1=`echo "$line" | awk -F= '{print $2}'`





share|improve this answer





















  • Thanks Bro, It's work for me
    – Nullpointer
    yesterday


















up vote
2
down vote













You can rewrite your shell script as



awk -F= '{print $2}' "$1"


and avoid all the shell handling entirely (apart from the single quotes here and the $1 parameter expansion which you want anyway); or even as an AWK script



#!/usr/bin/awk -f

BEGIN { FS="=" }

{ print $2 }





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


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f489500%2funable-to-print-star-value-with-echo%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








    up vote
    3
    down vote



    accepted










    The problem is in the echo $line inside the back quotes. Double quote the variable to prevent wildcard expansion:



    t1=`echo "$line" | awk -F= '{print $2}'`





    share|improve this answer





















    • Thanks Bro, It's work for me
      – Nullpointer
      yesterday















    up vote
    3
    down vote



    accepted










    The problem is in the echo $line inside the back quotes. Double quote the variable to prevent wildcard expansion:



    t1=`echo "$line" | awk -F= '{print $2}'`





    share|improve this answer





















    • Thanks Bro, It's work for me
      – Nullpointer
      yesterday













    up vote
    3
    down vote



    accepted







    up vote
    3
    down vote



    accepted






    The problem is in the echo $line inside the back quotes. Double quote the variable to prevent wildcard expansion:



    t1=`echo "$line" | awk -F= '{print $2}'`





    share|improve this answer












    The problem is in the echo $line inside the back quotes. Double quote the variable to prevent wildcard expansion:



    t1=`echo "$line" | awk -F= '{print $2}'`






    share|improve this answer












    share|improve this answer



    share|improve this answer










    answered yesterday









    choroba

    26.2k44672




    26.2k44672












    • Thanks Bro, It's work for me
      – Nullpointer
      yesterday


















    • Thanks Bro, It's work for me
      – Nullpointer
      yesterday
















    Thanks Bro, It's work for me
    – Nullpointer
    yesterday




    Thanks Bro, It's work for me
    – Nullpointer
    yesterday












    up vote
    2
    down vote













    You can rewrite your shell script as



    awk -F= '{print $2}' "$1"


    and avoid all the shell handling entirely (apart from the single quotes here and the $1 parameter expansion which you want anyway); or even as an AWK script



    #!/usr/bin/awk -f

    BEGIN { FS="=" }

    { print $2 }





    share|improve this answer



























      up vote
      2
      down vote













      You can rewrite your shell script as



      awk -F= '{print $2}' "$1"


      and avoid all the shell handling entirely (apart from the single quotes here and the $1 parameter expansion which you want anyway); or even as an AWK script



      #!/usr/bin/awk -f

      BEGIN { FS="=" }

      { print $2 }





      share|improve this answer

























        up vote
        2
        down vote










        up vote
        2
        down vote









        You can rewrite your shell script as



        awk -F= '{print $2}' "$1"


        and avoid all the shell handling entirely (apart from the single quotes here and the $1 parameter expansion which you want anyway); or even as an AWK script



        #!/usr/bin/awk -f

        BEGIN { FS="=" }

        { print $2 }





        share|improve this answer














        You can rewrite your shell script as



        awk -F= '{print $2}' "$1"


        and avoid all the shell handling entirely (apart from the single quotes here and the $1 parameter expansion which you want anyway); or even as an AWK script



        #!/usr/bin/awk -f

        BEGIN { FS="=" }

        { print $2 }






        share|improve this answer














        share|improve this answer



        share|improve this answer








        edited yesterday

























        answered yesterday









        Stephen Kitt

        162k24360438




        162k24360438






























            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%2f489500%2funable-to-print-star-value-with-echo%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

            Accessing regular linux commands in Huawei's Dopra Linux

            Can't connect RFCOMM socket: Host is down

            Kernel panic - not syncing: Fatal Exception in Interrupt