【问题标题】:echo command is not working as expected in shell scriptinecho 命令在 shell 脚本中没有按预期工作
【发布时间】:2016-08-03 18:45:11
【问题描述】:

我的文件系统如下所示

Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/rootvg-rootvol
                       20G  3.7G   15G  20% /
tmpfs                  71G  8.0K   71G   1% /dev/shm

我的代码如下:

varone = df -h | awk ' {print $1 }'
vartwo = df -h | awk ' NR == 2 {print $2","$3","$4","$5","$6 }'
echo "$varone $vartwo" >> /home/jeevagan/test_scripts/sizes/excel.csv

我想将“df -h”导出到 csv 文件中。为什么我在一个变量中单独打印$1,意味着'df -h'输出中有空格。我希望它以单行打印。

当我运行脚本时,它会抛出类似

的错误

varone: command not found

vartwo: command not found

【问题讨论】:

标签: linux shell echo linux-disk-free


【解决方案1】:

您不能在等号周围放置空格,并且您需要使用反引号将命令结果放入变量中。

试试这个:

varone=`df -h | awk ' {print $1 }'`
vartwo=`df -h | awk ' NR == 2 {print $2","$3","$4","$5","$6 }'`
echo "$varone $vartwo" >> /home/jeevagan/test_scripts/sizes/excel.csv

【讨论】:

  • 考虑使用$()而不是backtics。
  • 这行得通@yoones。但它没有按预期给出输出。我的预期输出是在 csv 文件的单独单元格中打印 /dev/mapper/rootvg-rootvol 20G 3.7G 15G 20% /
  • 然后考虑做类似的事情:varone=`df -h | awk ' {print $1 }' | tr '\n' ';'`
【解决方案2】:

如果你只是想捕获 df -h

varOne=`df -h -P| awk '{print $1","$2","$3","$4","$5","$6 }'`
echo  "$varOne" >> /home/jeevagan/test_scripts/sizes/excel.csv

在此处了解“P”

How can I *only* get the number of bytes available on a disk in bash?

【讨论】:

    猜你喜欢
    • 2014-05-07
    • 2019-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-20
    • 1970-01-01
    • 2012-05-10
    • 2022-12-17
    相关资源
    最近更新 更多