【问题标题】:Storing wc into a variable saves the complete file将 wc 存储到变量中可以保存完整的文件
【发布时间】:2017-06-13 18:48:30
【问题描述】:

我正在尝试将 wc 的输出存储到一个变量中,但有一些问题

  • 首先我不能使用

    COUNT=$(ls -1 file.log | wc -l) 因为我得到了错误:

    变量语法。

  • 其次,如果我做这样的事情

    COUNT='ls -1 file.log | wc -l'

然后我输入$count 我得到类似:文件的内容

cat: 无法打开 |: 没有这样的文件或目录

cat: 无法打开 wc: 没有这样的文件或目录

cat: 无法打开 -l: 没有这样的文件或目录

如果我尝试使用

COUNT='wc -l < ./file.log'

如果我输入 $count 我得到:

wc: 无法打开

对我的任何帮助将不胜感激。

【问题讨论】:

  • 为什么不只是COUNT=$(wc -l file.log |awk '{print $1}')
  • 我收到错误:变量语法。
  • 你用的是什么外壳? ps 命令的输出是什么?

标签: linux shell unix wc


【解决方案1】:

我认为您使用了错误的报价。您需要使用反引号 (`)(大多数键盘中数字 1 左侧的那个)

试试,

count=`wc -l file.log`
count=`ls -1 file.log | wc -l`
echo $count

【讨论】:

  • 第一个我得到这个:80:找不到命令。第二个我得到1:第1行的语法错误:`('意外
  • @Ram 你能给出which wcalias wc这些命令的输出吗
  • 而且,您是在控制台中执行这些命令还是它们是 shell 脚本的一部分?
  • 第一个返回 vt220 /usr/bin/wc 第二个不返回任何东西,我也在控制台中输入它们
  • @Ram 你可以执行这个然后尝试上面的命令吗? export TERM=vt100
【解决方案2】:

看起来您正在使用 C shell (csh)。它应该是这样的:

#!/bin/csh

set count = `wc -l /path/to/file | cut -d' ' -f1`
echo "$count"

看看这个:https://en.wikibooks.org/wiki/C_Shell_Scripting/Variables

或者,如果已安装,您需要使用 bash 运行脚本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-23
    • 2023-04-08
    • 1970-01-01
    • 2018-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多