Unable to print * (star) value with echo

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












0














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
    Dec 17 at 15:44















0














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
    Dec 17 at 15:44













0












0








0







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 Dec 17 at 15:15









Nullpointer

2571416




2571416











  • Related: When is double-quoting necessary?
    – Kusalananda
    Dec 17 at 15:44
















  • Related: When is double-quoting necessary?
    – Kusalananda
    Dec 17 at 15:44















Related: When is double-quoting necessary?
– Kusalananda
Dec 17 at 15:44




Related: When is double-quoting necessary?
– Kusalananda
Dec 17 at 15:44










2 Answers
2






active

oldest

votes


















3














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
    Dec 17 at 15:37


















2














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









    3














    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
      Dec 17 at 15:37















    3














    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
      Dec 17 at 15:37













    3












    3








    3






    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 Dec 17 at 15:26









    choroba

    26.3k44672




    26.3k44672











    • Thanks Bro, It's work for me
      – Nullpointer
      Dec 17 at 15:37
















    • Thanks Bro, It's work for me
      – Nullpointer
      Dec 17 at 15:37















    Thanks Bro, It's work for me
    – Nullpointer
    Dec 17 at 15:37




    Thanks Bro, It's work for me
    – Nullpointer
    Dec 17 at 15:37













    2














    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



























      2














      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

























        2












        2








        2






        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 Dec 17 at 15:29

























        answered Dec 17 at 15:27









        Stephen Kitt

        164k24365444




        164k24365444



























            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

            How to check contact read email or not when send email to Individual?

            Bahrain

            Postfix configuration issue with fips on centos 7; mailgun relay