Почему пробелы не распознаются базовыми утилитами Unix в моем скрипте?

Возможный дубликат Есть ли способ заставить mv создать каталог для перемещения, если он не существует? .

Вы можете использовать сценарий bash и псевдоним, чтобы создать для этого «новую команду».

cmv.sh

#!/bin/bash

mkdir --parents "$2"; mv "$1" "$_"

И в ~/.bashrcдобавить строку:

alias cmv="/path/to/cmv.sh"

И тогда вы можете использовать его как:

~# cmv **/*.zip destination

И место назначения будет создано.

0
17.01.2021, 18:39
1 ответ

Проблема с вашим собственным конвейером заключается в том, что вы не понимаете, что вывод из grepсостоит из нескольких строк , с одним целым числом в каждой строке. Числа выводятся в одной строке только потому, что вы используете $priceбез кавычек.


Если вам нужна средняя цена, т.е. сумма после тега avg:, то проще всего будетawk:

curl -s 'https://gbp.rate.sx/btc?T' |
awk '/^avg:/ { print $2 }'

Приведенный выше код awkпечатает второе поле с разделителями -пробелами из каждой строки, начинающейся с текста avg:.

Это даст вам что-то вроде £26421. Если вам нужна эта сумма без символа фунта, используйте print substr($2,2)вместо print $2.

Если вы хотите сделать это, используя grepи cut, тогда сделайте что-то вроде

curl -s 'https://gbp.rate.sx/btc?T' |
grep '^avg:' | cut -d ' ' -f 2

Чтобы удалить из этого символ фунта, просто передайте это через cut -c 2-или tr -d '£'в конце.

Обратите внимание: чтобы просто вывести результат, нет необходимости сначала помещать его в переменную.

2
18.03.2021, 22:36

Теги

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