Print name if parameter passed to functionFunction to evaluate variables in BASHHow do I get the value of a named option of an already running process in Linux?Conditional execution block with || and parentheses problemShell valid function name charactersWhile loop with result from function - BASHGet specific result from functionBash function assign value to passed parameterFunction to iterate over arrayHow am I allowed to pass a void parameter through bash functions?Pass parameter to Bash function which will serve as a pattern to awk

Term for the "extreme-extension" version of a straw man fallacy?

Purchasing a ticket for someone else in another country?

How can I get through very long and very dry, but also very useful technical documents when learning a new tool?

Proof of work - lottery approach

Is there a good way to store credentials outside of a password manager?

Closest Prime Number

Did Dumbledore lie to Harry about how long he had James Potter's invisibility cloak when he was examining it? If so, why?

Implement the Thanos sorting algorithm

How do I go from 300 unfinished/half written blog posts, to published posts?

Trouble understanding the speech of overseas colleagues

Is this apparent Class Action settlement a spam message?

What happens if you roll doubles 3 times then land on "Go to jail?"

How do I find the solutions of the following equation?

Sequence of Tenses: Translating the subjunctive

Failed to fetch jessie backports repository

Applicability of Single Responsibility Principle

Why, precisely, is argon used in neutrino experiments?

Is a stroke of luck acceptable after a series of unfavorable events?

How long to clear the 'suck zone' of a turbofan after start is initiated?

How do scammers retract money, while you can’t?

Why Were Madagascar and New Zealand Discovered So Late?

What is the opposite of 'gravitas'?

How do we know the LHC results are robust?

How to Reset Passwords on Multiple Websites Easily?



Print name if parameter passed to function


Function to evaluate variables in BASHHow do I get the value of a named option of an already running process in Linux?Conditional execution block with || and parentheses problemShell valid function name charactersWhile loop with result from function - BASHGet specific result from functionBash function assign value to passed parameterFunction to iterate over arrayHow am I allowed to pass a void parameter through bash functions?Pass parameter to Bash function which will serve as a pattern to awk













4















I have written a little function that exits if the value of the function argument is empty, I would like to be able to also print the name of the parameter (not the value!) if it is possible, my following implementation fails to print the name of the parameter.



function exitIfEmpty()

if [ -z "$1" ]
then
echo "Exiting because $!1 is empty"
exit 1
fi



when called like so



exitIfEmpty someKey



should print



Exiting because someKey is empty









share|improve this question









New contributor




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




















  • Wait, when you give it "someKey", $1 won't be empty. If it's empty, there's nothing to print.

    – choroba
    yesterday











  • @choroba I want to print the parameter name if possible not its value.

    – Xerxes
    yesterday






  • 1





    What do you mean by the name? Function arguments don't have names.

    – choroba
    yesterday















4















I have written a little function that exits if the value of the function argument is empty, I would like to be able to also print the name of the parameter (not the value!) if it is possible, my following implementation fails to print the name of the parameter.



function exitIfEmpty()

if [ -z "$1" ]
then
echo "Exiting because $!1 is empty"
exit 1
fi



when called like so



exitIfEmpty someKey



should print



Exiting because someKey is empty









share|improve this question









New contributor




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




















  • Wait, when you give it "someKey", $1 won't be empty. If it's empty, there's nothing to print.

    – choroba
    yesterday











  • @choroba I want to print the parameter name if possible not its value.

    – Xerxes
    yesterday






  • 1





    What do you mean by the name? Function arguments don't have names.

    – choroba
    yesterday













4












4








4


1






I have written a little function that exits if the value of the function argument is empty, I would like to be able to also print the name of the parameter (not the value!) if it is possible, my following implementation fails to print the name of the parameter.



function exitIfEmpty()

if [ -z "$1" ]
then
echo "Exiting because $!1 is empty"
exit 1
fi



when called like so



exitIfEmpty someKey



should print



Exiting because someKey is empty









share|improve this question









New contributor




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












I have written a little function that exits if the value of the function argument is empty, I would like to be able to also print the name of the parameter (not the value!) if it is possible, my following implementation fails to print the name of the parameter.



function exitIfEmpty()

if [ -z "$1" ]
then
echo "Exiting because $!1 is empty"
exit 1
fi



when called like so



exitIfEmpty someKey



should print



Exiting because someKey is empty






bash






share|improve this question









New contributor




Xerxes 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




Xerxes 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









GAD3R

27.5k1858114




27.5k1858114






New contributor




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









asked yesterday









XerxesXerxes

1956




1956




New contributor




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





New contributor





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






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












  • Wait, when you give it "someKey", $1 won't be empty. If it's empty, there's nothing to print.

    – choroba
    yesterday











  • @choroba I want to print the parameter name if possible not its value.

    – Xerxes
    yesterday






  • 1





    What do you mean by the name? Function arguments don't have names.

    – choroba
    yesterday

















  • Wait, when you give it "someKey", $1 won't be empty. If it's empty, there's nothing to print.

    – choroba
    yesterday











  • @choroba I want to print the parameter name if possible not its value.

    – Xerxes
    yesterday






  • 1





    What do you mean by the name? Function arguments don't have names.

    – choroba
    yesterday
















Wait, when you give it "someKey", $1 won't be empty. If it's empty, there's nothing to print.

– choroba
yesterday





Wait, when you give it "someKey", $1 won't be empty. If it's empty, there's nothing to print.

– choroba
yesterday













@choroba I want to print the parameter name if possible not its value.

– Xerxes
yesterday





@choroba I want to print the parameter name if possible not its value.

– Xerxes
yesterday




1




1





What do you mean by the name? Function arguments don't have names.

– choroba
yesterday





What do you mean by the name? Function arguments don't have names.

– choroba
yesterday










3 Answers
3






active

oldest

votes


















13














What gets passed to the function is just a string. If you run func somevar, what is passed is the string somevar. If you run func $somevar, what is passed is (the word-split) value of the variable somevar. Neither is a variable reference, a pointer or anything like that, they're just strings.



If you want to pass the name of a variable to a function, and then look at the value of that variable, you'll need to use a nameref (Bash 4.3 or later, IIRC), or an indirect reference $!var. $!var expands to the value of the variable whose name is stored in var.



So, you just have it the wrong way in the script, if you pass the name of a variable to function, use "$!1" to get the value of the variable named in $1, and plain "$1" to get the name.



E.g. this will print variable bar is empty, exiting, and exit the shell:



#!/bin/bash
exitIfEmpty()
if [ -z "$!1" ]; then
echo "variable $1 is empty, exiting"
exit 1
fi

foo=x
unset bar
exitIfEmpty foo
exitIfEmpty bar





share|improve this answer

























  • Also: : "$!1:?Variable $1 is empty or unset".

    – Kusalananda
    15 hours ago



















3














Pass the name as second argument



function exitIfEmpty()

if [ -z "$1" ]
then
echo "Exiting because $2 is empty"
exit 1
fi


exitIfEmpty "$someKey" someKey





share|improve this answer










New contributor




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



























    2














    echo "Exiting because $1 is empty"


    should do the trick.






    share|improve this answer


















    • 3





      Wouldn't this always print Exiting because is empty, if the test is against $1 also? That doesn't seem very useful.

      – ilkkachu
      yesterday











    • ITYM echo 'Exit because $1 is empty' or echo "Exit because $1 is empty" -- single-quote strings don't do variable expansion; double-quoted strings require $ to be escaped

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



    );






    Xerxes 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%2f508764%2fprint-name-if-parameter-passed-to-function%23new-answer', 'question_page');

    );

    Post as a guest















    Required, but never shown

























    3 Answers
    3






    active

    oldest

    votes








    3 Answers
    3






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    13














    What gets passed to the function is just a string. If you run func somevar, what is passed is the string somevar. If you run func $somevar, what is passed is (the word-split) value of the variable somevar. Neither is a variable reference, a pointer or anything like that, they're just strings.



    If you want to pass the name of a variable to a function, and then look at the value of that variable, you'll need to use a nameref (Bash 4.3 or later, IIRC), or an indirect reference $!var. $!var expands to the value of the variable whose name is stored in var.



    So, you just have it the wrong way in the script, if you pass the name of a variable to function, use "$!1" to get the value of the variable named in $1, and plain "$1" to get the name.



    E.g. this will print variable bar is empty, exiting, and exit the shell:



    #!/bin/bash
    exitIfEmpty()
    if [ -z "$!1" ]; then
    echo "variable $1 is empty, exiting"
    exit 1
    fi

    foo=x
    unset bar
    exitIfEmpty foo
    exitIfEmpty bar





    share|improve this answer

























    • Also: : "$!1:?Variable $1 is empty or unset".

      – Kusalananda
      15 hours ago
















    13














    What gets passed to the function is just a string. If you run func somevar, what is passed is the string somevar. If you run func $somevar, what is passed is (the word-split) value of the variable somevar. Neither is a variable reference, a pointer or anything like that, they're just strings.



    If you want to pass the name of a variable to a function, and then look at the value of that variable, you'll need to use a nameref (Bash 4.3 or later, IIRC), or an indirect reference $!var. $!var expands to the value of the variable whose name is stored in var.



    So, you just have it the wrong way in the script, if you pass the name of a variable to function, use "$!1" to get the value of the variable named in $1, and plain "$1" to get the name.



    E.g. this will print variable bar is empty, exiting, and exit the shell:



    #!/bin/bash
    exitIfEmpty()
    if [ -z "$!1" ]; then
    echo "variable $1 is empty, exiting"
    exit 1
    fi

    foo=x
    unset bar
    exitIfEmpty foo
    exitIfEmpty bar





    share|improve this answer

























    • Also: : "$!1:?Variable $1 is empty or unset".

      – Kusalananda
      15 hours ago














    13












    13








    13







    What gets passed to the function is just a string. If you run func somevar, what is passed is the string somevar. If you run func $somevar, what is passed is (the word-split) value of the variable somevar. Neither is a variable reference, a pointer or anything like that, they're just strings.



    If you want to pass the name of a variable to a function, and then look at the value of that variable, you'll need to use a nameref (Bash 4.3 or later, IIRC), or an indirect reference $!var. $!var expands to the value of the variable whose name is stored in var.



    So, you just have it the wrong way in the script, if you pass the name of a variable to function, use "$!1" to get the value of the variable named in $1, and plain "$1" to get the name.



    E.g. this will print variable bar is empty, exiting, and exit the shell:



    #!/bin/bash
    exitIfEmpty()
    if [ -z "$!1" ]; then
    echo "variable $1 is empty, exiting"
    exit 1
    fi

    foo=x
    unset bar
    exitIfEmpty foo
    exitIfEmpty bar





    share|improve this answer















    What gets passed to the function is just a string. If you run func somevar, what is passed is the string somevar. If you run func $somevar, what is passed is (the word-split) value of the variable somevar. Neither is a variable reference, a pointer or anything like that, they're just strings.



    If you want to pass the name of a variable to a function, and then look at the value of that variable, you'll need to use a nameref (Bash 4.3 or later, IIRC), or an indirect reference $!var. $!var expands to the value of the variable whose name is stored in var.



    So, you just have it the wrong way in the script, if you pass the name of a variable to function, use "$!1" to get the value of the variable named in $1, and plain "$1" to get the name.



    E.g. this will print variable bar is empty, exiting, and exit the shell:



    #!/bin/bash
    exitIfEmpty()
    if [ -z "$!1" ]; then
    echo "variable $1 is empty, exiting"
    exit 1
    fi

    foo=x
    unset bar
    exitIfEmpty foo
    exitIfEmpty bar






    share|improve this answer














    share|improve this answer



    share|improve this answer








    edited 15 hours ago

























    answered yesterday









    ilkkachuilkkachu

    62.8k10103180




    62.8k10103180












    • Also: : "$!1:?Variable $1 is empty or unset".

      – Kusalananda
      15 hours ago


















    • Also: : "$!1:?Variable $1 is empty or unset".

      – Kusalananda
      15 hours ago

















    Also: : "$!1:?Variable $1 is empty or unset".

    – Kusalananda
    15 hours ago






    Also: : "$!1:?Variable $1 is empty or unset".

    – Kusalananda
    15 hours ago














    3














    Pass the name as second argument



    function exitIfEmpty()

    if [ -z "$1" ]
    then
    echo "Exiting because $2 is empty"
    exit 1
    fi


    exitIfEmpty "$someKey" someKey





    share|improve this answer










    New contributor




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
























      3














      Pass the name as second argument



      function exitIfEmpty()

      if [ -z "$1" ]
      then
      echo "Exiting because $2 is empty"
      exit 1
      fi


      exitIfEmpty "$someKey" someKey





      share|improve this answer










      New contributor




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






















        3












        3








        3







        Pass the name as second argument



        function exitIfEmpty()

        if [ -z "$1" ]
        then
        echo "Exiting because $2 is empty"
        exit 1
        fi


        exitIfEmpty "$someKey" someKey





        share|improve this answer










        New contributor




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










        Pass the name as second argument



        function exitIfEmpty()

        if [ -z "$1" ]
        then
        echo "Exiting because $2 is empty"
        exit 1
        fi


        exitIfEmpty "$someKey" someKey






        share|improve this answer










        New contributor




        JShorthouse 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 answer



        share|improve this answer








        edited 8 hours ago





















        New contributor




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









        answered yesterday









        JShorthouseJShorthouse

        50728




        50728




        New contributor




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





        New contributor





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






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





















            2














            echo "Exiting because $1 is empty"


            should do the trick.






            share|improve this answer


















            • 3





              Wouldn't this always print Exiting because is empty, if the test is against $1 also? That doesn't seem very useful.

              – ilkkachu
              yesterday











            • ITYM echo 'Exit because $1 is empty' or echo "Exit because $1 is empty" -- single-quote strings don't do variable expansion; double-quoted strings require $ to be escaped

              – jimbobmcgee
              yesterday















            2














            echo "Exiting because $1 is empty"


            should do the trick.






            share|improve this answer


















            • 3





              Wouldn't this always print Exiting because is empty, if the test is against $1 also? That doesn't seem very useful.

              – ilkkachu
              yesterday











            • ITYM echo 'Exit because $1 is empty' or echo "Exit because $1 is empty" -- single-quote strings don't do variable expansion; double-quoted strings require $ to be escaped

              – jimbobmcgee
              yesterday













            2












            2








            2







            echo "Exiting because $1 is empty"


            should do the trick.






            share|improve this answer













            echo "Exiting because $1 is empty"


            should do the trick.







            share|improve this answer












            share|improve this answer



            share|improve this answer










            answered yesterday









            PankiPanki

            838412




            838412







            • 3





              Wouldn't this always print Exiting because is empty, if the test is against $1 also? That doesn't seem very useful.

              – ilkkachu
              yesterday











            • ITYM echo 'Exit because $1 is empty' or echo "Exit because $1 is empty" -- single-quote strings don't do variable expansion; double-quoted strings require $ to be escaped

              – jimbobmcgee
              yesterday












            • 3





              Wouldn't this always print Exiting because is empty, if the test is against $1 also? That doesn't seem very useful.

              – ilkkachu
              yesterday











            • ITYM echo 'Exit because $1 is empty' or echo "Exit because $1 is empty" -- single-quote strings don't do variable expansion; double-quoted strings require $ to be escaped

              – jimbobmcgee
              yesterday







            3




            3





            Wouldn't this always print Exiting because is empty, if the test is against $1 also? That doesn't seem very useful.

            – ilkkachu
            yesterday





            Wouldn't this always print Exiting because is empty, if the test is against $1 also? That doesn't seem very useful.

            – ilkkachu
            yesterday













            ITYM echo 'Exit because $1 is empty' or echo "Exit because $1 is empty" -- single-quote strings don't do variable expansion; double-quoted strings require $ to be escaped

            – jimbobmcgee
            yesterday





            ITYM echo 'Exit because $1 is empty' or echo "Exit because $1 is empty" -- single-quote strings don't do variable expansion; double-quoted strings require $ to be escaped

            – jimbobmcgee
            yesterday










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









            draft saved

            draft discarded


















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












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











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














            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.




            draft saved


            draft discarded














            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f508764%2fprint-name-if-parameter-passed-to-function%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







            -bash

            Popular posts from this blog

            Frič See also Navigation menuinternal link

            Identify plant with long narrow paired leaves and reddish stems Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern) Announcing the arrival of Valued Associate #679: Cesar Manara Unicorn Meta Zoo #1: Why another podcast?What is this plant with long sharp leaves? Is it a weed?What is this 3ft high, stalky plant, with mid sized narrow leaves?What is this young shrub with opposite ovate, crenate leaves and reddish stems?What is this plant with large broad serrated leaves?Identify this upright branching weed with long leaves and reddish stemsPlease help me identify this bulbous plant with long, broad leaves and white flowersWhat is this small annual with narrow gray/green leaves and rust colored daisy-type flowers?What is this chilli plant?Does anyone know what type of chilli plant this is?Help identify this plant

            fontconfig warning: “/etc/fonts/fonts.conf”, line 100: unknown “element blank” The 2019 Stack Overflow Developer Survey Results Are In“tar: unrecognized option --warning” during 'apt-get install'How to fix Fontconfig errorHow do I figure out which font file is chosen for a system generic font alias?Why are some apt-get-installed fonts being ignored by fc-list, xfontsel, etc?Reload settings in /etc/fonts/conf.dTaking 30 seconds longer to boot after upgrade from jessie to stretchHow to match multiple font names with a single <match> element?Adding a custom font to fontconfigRemoving fonts from fontconfig <match> resultsBroken fonts after upgrading Firefox ESR to latest Firefox