#bash
#bash
Вопрос:
#!/bin/bash
{ cat sample.txt; echo; } | while read -r -a A_Name; do
if [ ! -z "${A_Name[0]}" ]; then
echo " ${A_Name[0]%.isx} "
fi
done
Я пытаюсь отобразить содержимое текстового файла (который включает файлы .isx) с помощью цикла while, но когда я пытаюсь исключить расширение с помощью %, это не работает.
Вывод
.isx
отображается для первых двух значений:
./test.sh
abc.isx
def.isx
ghi
Входные данные
sample.txt
файл:
abc.isx
def.isx
ghi.isx
Пожалуйста, помогите. Спасибо.
Комментарии:
1. Пожалуйста, добавьте более подробную информацию о вашей проблеме, чтобы мы могли ответить на ваш вопрос
2. Имеет ли файл окончания строк в стиле DOS / Windows?
3. Нет, этого нет. фактически это пустой файл. просто отображение выходных данных без .isx. он отлично работал с циклом for, но не с циклом while .. спасибо
Ответ №1:
почему так сложно?
#!/bin/bash
cat sample.txt | while read line; do
echo "${line%.isx}"
done
или с помощью sed
sed "s/.isx//" sample.txt >output.txt
или с заменой sed и inplace
sed -i "s/.isx//" sample.txt