я написал сценарий для проверки выхода из файла, затем проверил, содержит ли этот файл строку, и, наконец, распечатал эту строку, вот это
#!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"
в качестве переменной?
Вывод по умолчанию 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
Сохраняйте только первое поле в выводе wc
. Awk - мой любимый инструмент для этого:
wc -l "$1" | awk '{ print $1 }'
Чтобы записать это в переменной:
COUNT="$(wc -l "$1" | awk '{print $1}')"