Есть ли способ использовать другую команду, кроме echo (do rm file) внутри условия в unix - PullRequest
0 голосов
/ 26 февраля 2020

хорошо, я читаю имена файлов из filelist.txt; для каждой строки в filelist.txt я хочу выполнить команду lar -c.

Для проверки своего кода я хочу запустить только в первой строке.

Вот мой код

#!/bin/bash

fileList=/path/to/fileList.txt
count=1
if [[ $count == 1]]; then
  #getting the first line of the txt file
  line=$(sed "${count}q;d" $fileList)
  #execute my command
  do lar -c $line
fi;
count=`expr $count +1`

, но когда я пытаюсь выполнить мой файл. sh, я получаю следующую ошибку

./ReadFilesFirstBatch.sh: line 34: syntax error near unexpected token `do'

Я прошу прощения очень плохо знаком с bash кодированием, но я хочу понять это!

Ответы [ 2 ]

1 голос
/ 26 февраля 2020

Вам нужно будет использовать while read loop.

#!/usr/bin/env bash

fileList=/path/to/fileList.txt

while read -ra line; do
  echo lar -c "${line[@]}"
done < "$fileList"
0 голосов
/ 26 февраля 2020

Должен ли был do делать в любом случае? Просто напишите

lar -c "$line" 

без do. Не забудьте про кавычки, только для случая line содержит пробел.

Кстати, последнюю строку можно записать проще:

((count++))
...