Несколько указателей:
В сценариях оболочки пробел действительно имеет значение.Ваш код 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", так как вы задавали аналогичный вопрос до .