Как передать запятые, которые разделяют переменные в скрипте bash? - PullRequest
0 голосов
/ 08 октября 2019

Ubuntun 16.04
Bash 4.4.0

У меня есть строки и строки в CSV-файле, которые я могу использовать в качестве переменных. Пример:

"2013","White Woman","Green Orcas Rolling","Felix"
"2014","White Woman","Green Orcas Rolling","Felix"
"2012","White Woman","Green Orcas Rolling","Felix"
"2011","White Woman","Green Orcas Rolling","Felix"

Я хочу передать эти строки в скрипт bash, который сгенерирует полный URL.

Example: bash scriptname.sh "2012","White Woman","Green Orcas Rolling","Felix"

Я могу заменить пробелы, которые находятся внутри переменных, внутри скрипта,Как я могу удалить запятые, которые разделяют переменные, передаваемые в сценарий, внутри сценария, прежде чем они будут взаимодействовать и устанавливать сами.

Вот пример моего сценария:

#!/bin/bash

year="${1}"
oinker="${2// /%20}"
poinker="${3// /%20}"
loinker="${4// /%20}"

echo "https://mickeyorileysooo.com/sysbuilder.php?bg=2&year=${year}&oinker=${oinker}&poinker=${poinker}&loinker=${loinker}"

Здесьэто результат:

root@0000 ~ # bash scriptname.sh "2012" "White Woman" "Green Orcas Rolling" "Felix"
https://mickeyorileysooo.com/sysbuilder.php?bg=2&year=2012&oinker=White%20Woman&poinker=Green%20Orcas%20Rolling&loinker=Felix

Вот обновленный скрипт с руководством от Barmar:

#!/bin/bash

IFS=,
set -- $*

year="${1}"
oinker="${2// /%20}"
poinker="${3// /%20}"
loinker="${4// /%20}"

echo "https://mickeyorileysooo.com/sysbuilder.php?bg=2&year=${year}&oinker=${oinker}&poinker=${poinker}&loinker=${loinker}"

Теперь я оставляю запятые в командной строке и запускаю скрипт:

root@0000 ~ # bash scriptname.sh "2012","White Woman","Green Orcas Rolling","Felix"
https://mickeyorileysooo.com/sysbuilder.php?bg=2&year=2012&oinker=White%20Woman&poinker=Green%20Orcas%20Rolling&loinker=Felix

Запятых нет, и результат идеален!

1 Ответ

2 голосов
/ 08 октября 2019

Если вы хотите использовать запятую в качестве разделителя в скрипте вместо пробела, установите переменную IFS.

IFS=,
set -- $*

После этого $1 будет 2012, $2будет White Woman, $3 будет Green Orcas Rolling, а $4 будет Felix.

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