Разница между bash-shell и ksh-shell при использовании while с read - что я могу сделать в bash для того же ответа, что и в ksh?

У меня есть два сценария:

  1. в bash

    #!/bin/bash
    H_VARIABLE=empty
    echo "Zeile1
          Zeile2" |
    while read satz
     do 
      H_VARIABLE="$H_VARIABLE $satz"
    done
    echo H_VARIABLE=$H_VARIABLE
    

    Результат:

    H_VARIABLE=empty
    
  2. в кш

    #!/usr/bin/ksh
    H_VARIABLE=leer
    echo "Zeile1
          Zeile2" |
    while read satz
     do
      H_VARIABLE="$H_VARIABLE $satz"
    done
    echo H_VARIABLE=$H_VARIABLE
    

    Результат:

    H_VARIABLE=leer Zeile1 Zeile2  
    

Вывод: leer Zeile1 Zeile2! = leer

Что можно сделать в bash, чтобы получить тот же ответ, что и в ksh?

0
задан 15 May 2016 в 21:43

1 ответ

Проблема здесь - то, что в ударе while цикл выполняется в подоболочке, когда это находится на RHS канала. Вы могли сделать вместо этого

H_VARIABLE=leer
while read satz
  do H_VARIABLE="$H_VARIABLE $satz"
done < <(
echo "Zeile1
      Zeile2"
)

замена процесса использования или, с помощью здесь, строка

H_VARIABLE=leer
while read satz
  do H_VARIABLE="$H_VARIABLE $satz"
done <<< "Zeile1
          Zeile2"

Видит также var сценария удара, не измененный после цикла

2
ответ дан 16 May 2016 в 07:43
  • 1
    Если modinfo ничего не возвращает, то Ваш шаг usb_intf.c не был сделан правильно. Восстановите каждый шаг тщательно и, прежде ' make' сделайте ' сделайте чистыми ' – chili555 25 October 2017 в 04:41

Другие вопросы по тегам:

Похожие вопросы: