如何在 shell 脚本中将命令设为变量

如何在 shell 脚本中将命令设为变量

我编写了一个脚本来检查文件退出,然后检查该文件是否有给定的行,最后打印该行,如下所示

#!user/bin/bash
echo "$1 $2"
if [ -e "$1" ]; then
    if [ "$(wc -l "$1")" -ge 1 ]; then
        sed -n "1p" "$1"
    fi
fi

但它返回错误Illegal number: 3 /home/k/Documents/text.txt

我的问题是,如何将其设为wc -l "$1"变量?

答案1

默认输出wc -l file包括文件名和计数。

$ wc -l file
8 file

作为一种解决方法,您可以将文件内容重定向到wc -l通过 shell 的标准输入流:

$ wc -l < file
8

所以

if [ "$(wc -l < "$1")" -ge 1 ]; then
    sed -n "1p" "$1"
fi

答案2

仅保留输出中的第一个字段wc。Awk 是我最喜欢的工具:

wc -l "$1" | awk '{ print $1 }'

要将其捕获到变量中:

COUNT="$(wc -l "$1" | awk '{print $1}')"

相关内容