用于循环更改文件中变量的命令行
Command Line for Loop to Change Variables in File
我有一个编译脚本和 运行s 一段 idl 代码。看起来像这样,
arg1=
idl << EOF
.rnew testvalue_{arg1}.pro
testvalue_{arg1}.pro
EOF
我想 运行 来自命令行的 for 循环,其中 arg1 可以采用不同的名称。到目前为止我所拥有的是,
for arg1 in testvalue.sh; do arg1={'value1', 'value2'}; done
我认为我的逻辑不正确。我错过了什么?
首先,您需要将 $
放在变量名之前,以便 bash 知道它已被替换
另外你只需要给 testvalue.sh
值,因为它是从 </code> 复制到 <code>$arg1
但是为什么我不建议新建变量,就用</code>两次<br>
所以 <code>testvalue.sh
是:
idl << EOF
.rnew testvalue_.pro
testvalue_.pro
循环:
for arg in 'value1' 'value2'; do ./testvalue.sh $arg; done
我对问题的具体细节有点模糊,但听起来您想将 'value1' 和 'value2' 放在 for-loop 迭代的值列表中:
for arg1 in value1 value2
do
idl <<EOF
.rnew testvalue_${arg1}.pro
testvalue_${arg1}.pro
EOF
done
请注意,我还将 {arg1} 更改为 ${arg1},因为扩展变量需要美元符号。
shell 脚本中的 for
循环将遍历 in
关键字后的每个值。在上面的例子中,它会将 arg1
设置为 value1
,然后执行循环的内容,然后继续将 arg1
设置为 value2
并再次执行。
您还可以将值存储在变量中:
values_to_test="value1 value2"
for arg1 in $values_to_test
do
idl <<EOF
.rnew testvalue_${arg1}.pro
testvalue_${arg1}.pro
EOF
done
请记住,这会将分词和路径扩展应用于 values_to_test
,因此您需要确保 none 的值包含问号、方括号、星号、空格、制表符, 或换行符。
如果您担心,您可以在循环运行之前通过脚本中的 运行 set -f
禁用路径扩展(从而允许使用问号、方括号和星号)。
我有一个编译脚本和 运行s 一段 idl 代码。看起来像这样,
arg1=
idl << EOF
.rnew testvalue_{arg1}.pro
testvalue_{arg1}.pro
EOF
我想 运行 来自命令行的 for 循环,其中 arg1 可以采用不同的名称。到目前为止我所拥有的是,
for arg1 in testvalue.sh; do arg1={'value1', 'value2'}; done
我认为我的逻辑不正确。我错过了什么?
首先,您需要将 $
放在变量名之前,以便 bash 知道它已被替换
另外你只需要给 testvalue.sh
值,因为它是从 </code> 复制到 <code>$arg1
但是为什么我不建议新建变量,就用</code>两次<br>
所以 <code>testvalue.sh
是:
idl << EOF
.rnew testvalue_.pro
testvalue_.pro
循环:
for arg in 'value1' 'value2'; do ./testvalue.sh $arg; done
我对问题的具体细节有点模糊,但听起来您想将 'value1' 和 'value2' 放在 for-loop 迭代的值列表中:
for arg1 in value1 value2
do
idl <<EOF
.rnew testvalue_${arg1}.pro
testvalue_${arg1}.pro
EOF
done
请注意,我还将 {arg1} 更改为 ${arg1},因为扩展变量需要美元符号。
shell 脚本中的 for
循环将遍历 in
关键字后的每个值。在上面的例子中,它会将 arg1
设置为 value1
,然后执行循环的内容,然后继续将 arg1
设置为 value2
并再次执行。
您还可以将值存储在变量中:
values_to_test="value1 value2"
for arg1 in $values_to_test
do
idl <<EOF
.rnew testvalue_${arg1}.pro
testvalue_${arg1}.pro
EOF
done
请记住,这会将分词和路径扩展应用于 values_to_test
,因此您需要确保 none 的值包含问号、方括号、星号、空格、制表符, 或换行符。
如果您担心,您可以在循环运行之前通过脚本中的 运行 set -f
禁用路径扩展(从而允许使用问号、方括号和星号)。