[英]print a defined variable with preserving $
我想打印120个型号列表并保留“ $”。
我的脚本是:
#!/bin/sh
for i in {1..10};do
declare model="$"model$i
model_list=$(paste $model)
done
echo $model_list
运行之后
paste: $model1: No such file or directory
paste: $model2: No such file or directory
paste: $model3: No such file or directory
paste: $model4: No such file or directory
paste: $model5: No such file or directory
paste: $model6: No such file or directory
paste: $model7: No such file or directory
paste: $model8: No such file or directory
paste: $model9: No such file or directory
paste: $model10: No such file or directory
所需的输出:
$model1 $model2 $model3 $model4 $model5 $model6 $model7 $model8 $model9 $model10
您必须通过\\$
(反斜杠美元符号)对$
进行转义。
例如:
#!/bin/sh
for i in {1..10}; do
declare model="\$"model$i
model_list+=$(paste $model)
done
echo $model_list
您还可以缩短脚本:
#!/bin/sh
for i in {1..10}; do
model_list+=$(paste "\$model${i}")
done
echo $model_list
测试了5个名为$model1 - $model5
:
File Contents:
$model1 - a b c d e f g
$model2 - 1 2 3 4 5 6 7 8 9 10
$model3 - I J K L M N O P
$model4 - 11 12 13 14 15 16 17 18 19 20
$model5 - q r s t u v w x y z
Output:
a b c d e f g1 2 3 4 5 6 7 8 9 10I J K L M N O P11 12 13 14 15 16 17 18 19 20q r s t u v w x y z
如果您对输出感兴趣,而不是创建数组,则可以使用以下代码
for i in {1..10};do
echo -n "\$model$i "
done
echo
要么
for i in {1..10};do
echo -n '$model'$i' '
done
echo
要么
for i in {1..10};do
model_list=$model_list" \$model$i"
done
echo $model_list
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.