Search code examples
linuxloopsfor-loopidl

Command Line for Loop to Change Variables in File


I have a script that compiles and runs a piece of idl code. Looks like this,

arg1=$1

idl << EOF
.rnew testvalue_{arg1}.pro
testvalue_{arg1}.pro
EOF

I want to run a for loop from the command line is in which arg1 can take on different names. What I have so far is,

for arg1 in testvalue.sh; do arg1={'value1', 'value2'}; done

I don't think my logic is correct. What am I missing?


Solution

  • first, you need to place $ before variable name so bash knows that it is replaced
    Also you just need to give testvalue.sh value, because it is copied from $1 to $arg1
    But why I don't recommend creating new variables, just use $1 two times
    So the testvalue.sh is:

     idl << EOF
     .rnew testvalue_$1.pro
     testvalue_$1.pro
    

    And the loop:

    for arg in 'value1' 'value2'; do ./testvalue.sh $arg; done