Результат команды для переменной в скрипте оболочки цикла - PullRequest
0 голосов
/ 21 ноября 2011

Как: результат команды для переменной?

for file in find "$1" do
    var = $file | cut -d/ -f6-
    echo $var
    ...
done

Ответы [ 2 ]

1 голос
/ 22 ноября 2011

Несколько указателей:

В сценариях оболочки пробел действительно имеет значение.Ваш код var = $file является ошибкой, поскольку не существует исполняемого файла var, который знает, как обрабатывать аргументы = и $file.Вместо этого используйте

var="$file"

.

Чтобы получить выходные данные вашего конвейера $file | cut -d/ -f6-, вам потребуется следующий синтаксис:

var="$(echo $file | cut -d/ -f6-)"

In bash из последнихВ версии вместо этого вы можете использовать «здесь строку» и избежать затрат на echo и конвейер.

var="$(cut -d/ -f6- <<<"$file")"

Замечу, что вы также пытаетесь обработать результаты команды find, такжес неверным синтаксисом.Правильный синтаксис для этого:

while IFS= read -d $'\0' -r file ; do
    var="$(cut -d/ -f6- <<<"$file")"
    echo "$var"
done < <(find "$1")

Я должен снова спросить вас о том, что делает "поле 6", так как вы задавали аналогичный вопрос до .

0 голосов
/ 21 ноября 2011

Ваш вопрос не был так уж ясен, но

var=`cut -d/ -f6- < $file`

, что вы преследовали?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...