Как сделать комманду переменной в оболочке scrpit

я написал сценарий для проверки выхода из файла, затем проверил, содержит ли этот файл строку, и, наконец, распечатал эту строку, вот это

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

Но он возвращает ошибку вроде Недопустимый номер: 3 /home/k/Documents/text.txt

Мой вопрос в том, как сделать wc -l "$ 1" в качестве переменной?

0
задан 26 August 2021 в 02:26

2 ответа

Вывод по умолчанию wc -l file включает имя файла, а также счетчик.

$ wc -l file
8 file

В качестве обходного пути вы можете перенаправить содержимое файла в wc -l через стандартный поток ввода оболочки:

$ wc -l < file
8

So

if [ "$(wc -l < "$1")" -ge 1 ]; then
    sed -n "1p" "$1"
fi
3
ответ дан 4 September 2021 в 09:27

Сохраняйте только первое поле в выводе wc . Awk - мой любимый инструмент для этого:

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

Чтобы записать это в переменной:

COUNT="$(wc -l "$1" | awk '{print $1}')"
1
ответ дан 4 September 2021 в 09:27

Другие вопросы по тегам:

Похожие вопросы: