echo" $ var"打印空白区域

时间:2017-07-23 10:50:23

标签: bash shell awk

我基本上是在尝试比较两个文件,作为其中的一部分,我将文件的cksum分配给变量。但是当我尝试比较它时,它没有用。我意识到,当我尝试读取变量时,没有任何内容被打印出来

以下命令工作正常

s.joseph@VA-S-JOSEPH-900 /cygdrive/c/users/Anuprita
$ test=`cksum interface2 | awk -F" " '{ print $1 }'`

s.joseph@VA-S-JOSEPH-900 /cygdrive/c/users/Anuprita
$ echo "$test"
3021988741

但是当这些是脚本的一部分而我尝试echo $var时,没有任何内容被打印

$ for i in `ls interface*`; 
  do chksum1=`cksum $i | awk -F" " '{ print "'$1'" }'`; 
  echo "$chksum1"; 
  done

s.joseph@VA-S-JOSEPH-900 /cygdrive/c/users/Anuprita
$

我正在使用bash shell

如果不将其分配给任何变量,输出如下所示

for i in interface *;做echo" interface = \" $ i \"&#34 ;; cksum" $ i&#34 ;;完成

接口=" interface11" 4113442291 111 interface11 接口=" interface17" 1275738681 111 interface17 接口="接口2" 3021988741 186 interface2

看起来这只是在cygwin上使用bash的问题。该脚本似乎在unix上运行得很好

for ls interface*;做chksum1 = cksum $i | awk -F" " '{ print $1 }'; echo $ i,$ chksum1; DONE interface1,4294967295 interface2,4294967295

2 个答案:

答案 0 :(得分:0)

试试这个;

for i in ls interface*; do echo "interface=$i"; chksum1=$(cksum $i | awk -F" " '{ print "'$1'" }'); echo "$chksum1"; done

我喜欢添加echo语句来验证你对ls语句的看法,并且变量赋值应该使用$(cmd)或`cmd`

干杯

答案 1 :(得分:0)

你的第二个剧本中有什么:

print "'$1'"

与你在第一篇文章中的内容完全不同:

print $1

考虑一下,问问自己为什么要改变它以及你想要实现的目标。另请man awkg print "'$1'"查看for i in interface*; do chksum1=$(cksum "$i" | awk '{ print $1 }'); echo "$chksum1"; done 的内容。

最好的我可以告诉你没有并提供样本输入你的脚本应写:

a = tf.greater_equal(ladder, 0.99)
 b = tf.where(a)