Я боролся с этим в течение некоторого времени, но мои текущие заявления Баша выглядеть следующим образом:Chaining Bash Заявление
trim() {
local var="$*"
var="${var#"${var%%[![:space:]]*}"}" # remove leading whitespace characters
var="${var%"${var##*[![:space:]]}"}" # remove trailing whitespace characters
echo -n "$var"
}
с
CV=trim `$(cat somejson | grep '\"fdsaf\"' | sed 's/ "fasdf": "\(.*\)",/\1/')`
Это терпит неудачу, потому что я считаю,
$(cat somejson | grep '\"fdsaf\"' | sed 's/ "fasdf": "\(.*\)",/\1/')
интерпретируется как команда bash и возникает ошибка.
Вместо этого я реструктурировать это в
CV=$(cat somejson | grep '\"dasf\"' | sed 's/ "fasd": "\(.*\)",/\1/')
NEW_CV=$(trim $UNTRIMMED_PROD_NAME)
Есть уборщик способ цепи эти две команды вместе? Мой отредактированный подход выглядит беспорядочным.
Вам не нужно указывать 'echo -n' - bash автоматически обрезает завершающие символы новой строки для замены команд –