【发布时间】:2014-04-29 01:43:22
【问题描述】:
我很困惑这段代码中的 bash 变量 ${fwhm} 有什么问题。脚本 CRNitschke.py 返回 3 个浮点数,我需要在此 bash 脚本中使用它们:
fwhm_dt_ft=(`/u/ki/awright/thiswork/eyes/CRNitschke/CRNitschke.py ${file}`)
fwhm=${fwhm_dt_ft[0]}
dt=${fwhm_dt_ft[1]}
ft=${fwhm_dt_ft[2]}
在我运行这个之后,bash 中的一切看起来都很正常:
~$ echo "fwhm= " ${fwhm}
fwhm= 0.52
~$ echo "dt= " ${dt}
dt= 139.960346726
~$ echo "ft= " ${ft}
ft= 15.2307051015
除非我将这些作为输入在其他地方有问题。例如对于python脚本print_args.py给出的:
#! /usr/bin/env python
import sys
print "sys.argv=",sys.argv
我觉得这样的东西看起来很奇怪:
~$ ./print_argv.py ${fwhm} ${dt} ${ft}
sys.argv= ['./print_argv.py', '\x1b[?1034h0.52', '139.960346726', '15.2307051015']
有谁知道fwhm 变量会出现什么问题或我该如何解决?
这很奇怪,因为当我只是输入内容时它很好:
~$ abc=(0.52 139.960346726 15.2307051015)
~$ ./print_argv.py ${abc[0]} ${abc[1]} ${abc[2]}
sys.argv= ['./print_argv.py', '0.52', '139.960346726', '15.2307051015']
-亚当
第二天更新: ...好的,这里有一点补充信息。我在脚本中而不是在命令行中运行此命令,输出显示如下:
+ echo 'fwhm= ' '0.58'
fwhm= 0.58
+ echo 'dt= ' 114.988365258
dt= 114.988365258
+ echo 'ft= ' 12.190067533
ft= 12.190067533
您可以看到在echo 行中,fwhm 的数值用引号括起来,而dt 和ft 的情况并非如此。我不知道为什么会这样,因为 python 打印出的一切都是一样的。任何帮助将不胜感激!
【问题讨论】:
-
\x1b[?1034h是某种形式的终端转义序列;\x1b是逃避。也许是着色;也许是别的东西。很大程度上取决于?实际代表什么。 -
@JonathanLeffler 有没有什么命令可以让我了解
${fwhm}到底发生了什么以及这个转义序列到底代表什么? -
您可以使用例如
echo "{fhwm}" | od -c(或任何类似的字符分析程序)来识别变量中的内容。对于序列的含义,您可以在维基百科上调查ANSI escape code。
标签: python bash environment-variables