Вопрос про цикл в линукс

cat $* | while read line Как понять, до захода в цикл, что это последняя строчка в файле и что на следующем заходе будет обрабатываться второй параметр скрипта?


Ответы (1 шт):

Автор решения: Stanislav Volodarskiy

Вы склеили файлы вместе а потом пытаетесь их расклеить. Вложите два цикла:

#!/bin/bash
for f in "$@" ; do
    echo $f
    while IFS= read -r line; do
        echo "| $line"
    done < "$f"
done
$ ./temp.sh Temp.java temp.sh
Temp.java
| import java.util.*;
| import javax.script.*;
| 
| public class Temp {
|     public static void main(String[] args) throws ScriptException {
|         ScriptEngineManager manager = new ScriptEngineManager();
|         ScriptEngine engine = manager.getEngineByName("JavaScript");
|         String expression = new Scanner(System.in).nextLine(); 
|         System.out.println(engine.eval(expression));
|     } 
| }
temp.sh
| #!/bin/bash
| for f in "$@" ; do
|     echo $f
|     while IFS= read -r line; do
|         echo "| $line"
|     done < "$f"
| done
→ Ссылка