Как извлечь все после написания сценариев с использованием пробелов bash

#linux #bash #shell #scripting

#linux #bash #оболочка #написание

Вопрос:

Я пытаюсь прочитать первую строку текста из файла и отделить первое слово от всех других слов, чтобы я мог сохранить первое слово в переменной, а все остальные слова в массиве, как я мог бы это сделать, ниже приведен мой текущий скрипт с выводами, которые я получаю, и требуемыми выводами.

   filename='currentTextFile.txt
  firstline=$(head -n 2 $filename)
  firstword=${line%% *}
  echo "$firstline"
  echo "$firstword"`


current input
168820245 firstName LastName DateOfBirth


current output
168820245 firstName LastName DateOfBirth
168820245

desired output
168820245
firstName, LastName, DateOfBirth
  

Ответ №1:

Вы можете использовать read встроенный:

 read -ra arr < file

# first word
firstWord="${arr[0]}"

# remove 1st word from array
arr=("${arr[@]:1}")

# check output
declare -p firstWord arr
  

 declare -- firstWord="168820245"
declare -a arr='([0]="firstName" [1]="LastName" [2]="DateOfBirth")'
  

Демонстрация кода

Комментарии:

1. Я пытался реализовать это, но FirstWord пустое и вместо этого является 0-м значением в массиве

2. У меня была опечатка, сейчас исправлена. Проверьте обновленный код и посмотрите рабочую демонстрацию.

3. Другой способ удалить первый элемент из массива — это unset 'arr[0]' . Однако результирующий «разреженный массив» требует особого ухода.