«Когда на нее ссылаются» означает «когда она используется», т.е. контекст указывает, что значение переменной следует интерпретировать как число:
$ i=Hello
$ echo ${i}
Hello
$ echo $((i + 1))
1
Здесь i
явно содержит строку, но поскольку она используется в арифметическом выражении, она интерпретируется как арифметическое выражение. Если Hello
здесь не установлено или равно null, тогда оно становится равным 0; вы можете попробовать поиграть с разными значениями для i
и Hello
, чтобы увидеть эффекты (i=1+1
, Hello=Hello
и т. д. ).
Переменные с целочисленным атрибутом, т. е. переменные, объявленные с использованием declare -i
, приводятся к целым числам при присвоении, а не при использовании:
$ declare -i i
$ i=Hello
$ echo ${i}
0
Обратите внимание, что во всех этих случаях не сообщается об ошибках.
Целочисленные -атрибутивные переменные могут использоваться с арифметическими выражениями без синтаксического сахара:
$ declare -i i
$ i=3+4
$ echo ${i}
7
, что является прямым следствием того, что их присваивания интерпретируются как арифметические выражения.
Если вы хотите, чтобы каждый элемент был заключен в круглые скобки, а также в кавычки, вы можете просто добавить их в существующий блок map
, т.е. заменить
map{qq/"$_"/}
по
map{qq/"($_)"/}
Вы не хотите соединять элементы массива с помощью (,
-, что поместит (,
между каждым элементом @uuids
.
Вам просто нужно напечатать (
перед соединением и )
после него.
Например, используяprintf
:
$ perl -ne '
chomp;
if(s/^.*UUIDs in this bucket //) {
@uuids=split(/,/);
printf ",(%s)", join ",",map{qq/"$_"/} @uuids;
}' eligible_uuids_final_app1.txt
,("8501792126581991569","8073766106536916628","4830289023695906800","6135982080116553120","8306484440313978157","9040948912536460872","8471856544054164043","5431263453539111247","7661719762428556576"),("6501792126581991569","8073766106536916628","4830289023695906800","6135982080116553120","8306484440313978157","9040948912536460872","8471856544054164043","5431263453539111247","7661719762428556576")
(переводы строки добавлены к одному -лайнеру, чтобы сделать его читабельным)
Я не уверен, нужна ли вам ведущая запятая внутри (...)
или снаружи. Я предположил первое. При необходимости измените строку формата printf.
Вы можете добавить новую строку (, например.printf ",(%s)\n",....;
).