#bash #ifs
#bash #ifs
Вопрос:
Я пытаюсь прочитать строку в массив, используя пробел в качестве разделителя здесь я не хочу разбивать пробелы внутри одинарных кавычек или я могу использовать двойные кавычки, если я использую IFS =» (null), тогда все слова считываются в первый индекс, но это не цель.
x="-r asdf -w test='foo ' "
IFS=' ' read -r -a y<<<$x
echo ${y[@]}
Вывод:
-r asdf -w test=’foo ‘ #Пробелы исчезли.
Спасибо.
Комментарии:
1. Поэтому не используйте
IFS=
. Прочитайте всю строку. И разберите каждый символ во всей строке вручную.2. затем все предложение считывается в первый индекс переменной.
3. Я не понимаю вашего комментария. Что за «предложение»? Как предложение может выполнять действие, т.Е.. «читать»?
I don't want to break down the spaces inside single quote or I can use double quote
Точно — напишите свой собственный анализатор, который будет обрабатывать это.4. Извините за мою формулировку, я хочу сказать, что вся строка была прочитана в первый элемент массива, если я удалю IFS, > x=»-r asdf -w test=’foo ‘» > read -r -a y<<<$ x > echo $ {y[@]} -r asdf -w test =’foo ‘ > echo $ {y[0]} -r asdf -w test=’foo ‘ > echo ${y[1 ]}
5. вы не можете использовать кавычки внутри строки, они не имеют ценности и обрабатываются буквально как символы