Intereting Posts
Может ли ssh вернуть список каталогов? Эмулировать тройник с кошкой + перенаправления Какие менее популярные снаряды вы используете и каковы их преимущества? Понимание USB-устройств и портов портов notepad ++ добавляет \ r к скриптам оболочки Управляющие символы не отображаются в моем терминале (например, когда я нажимаю «^ C») Что такое ядро, «инструменты и утилиты GNU», оболочка и диспетчер окон? Как устройство IFB позиционируется в потоке пакетов ядра Linux Как изменить фон рабочего стола через терминал на openSUSE? Как добавить правила в исходную таблицу iptables? Обнуление / усечение десятичных знаков в столбце Восклицательные знаки в аргументах команды bash Как реализовать отложенное stdout в дочернем процессе без использования временных файлов? Вычисление общего использования ЦП в C Можно ли использовать gcc для компиляции двоичных файлов в FreeBSD 10?

Zsh скрипт, как конкатенировать элементы массива со строкой

Я написал сценарий zsh для автоматизации анализа в физике высоких энергий, и теперь я хотел бы использовать элемент одного из определенного массива некоторую строку и другой элемент какого-либо другого массива в команде, которая передается в одну из строк , Ниже приведен мой код:

 bkgarr=(TopJets BosonJets DiBoson TTbar) sigarr=(NM1 NM2 NM3 Scenario4 Scenario6) puarr=(50PU 140PU) lumarr=(30 300 3000) echo Please type 1 for 50PU samples and 2 for 140PU samples read PU if [[ $PU -ne 1 && $PU -ne 2 ]] ; then echo You have to enter 1 or 2 return 1 fi echo Please type 1 for 300fb-1 and 2 for 3000fb-1 read lum if [[ $lum -ne 1 && $lum -ne 2 ]] ; then echo You have to enter 1 or 2 return 1 fi if [ $PU = 1 ]; then let "lum = $lum + 1" #echo $lum fi root -l << EOF .L readerSummerStd.C+ .q EOF ex NEWrunReader.py <<EOEX :43s/Lumi.*/Lumi=$lumarr[lum]/ :x EOEX echo Press any key to proceed or Ctrl+C to abort! read for index in $bkgarr do screen -dmS $index"_"$lumarr[lum] #screen -S $index -p 0 -X stuff "$(typeset -p bkgarr)"$'\r' screen -S $index"_"$lumarr[lum] -p 0 -X stuff "./NEWrunReader.py SummerStd $puarr[PU]_$index >& $index"_"$lumarr[lum].txt &"$'\r' done for sigind in $sigarr do screen -dmS $sigin"_"$lumarr[lum] #screen -S $sigind -p 0 -X stuff "$(typeset -p bkgarr)"$'\r' screen -S $sigin"_"$lumarr[lum] -p 0 -X stuff "./NEWrunReader.py SummerStd $puarr[PU]_$sigind >& $sigind"_"$lumarr[lum].txt &"$'\r' done return 0 

Я думал, что следующие фрагменты кода будут делать, но они не удались:

 $index+"_"+$lumarr[lum] $index"_"$lumarr[lum] 

Я был бы признателен, если бы вы могли помочь мне в этом.

Использовать это:

 "${index}_${lumarr[lum]}" 

В общем:

  1. Интерполируйте все переменные, используя ${...} нотацию.
  2. Если вы прямо не хотите использовать расщепление слов, всегда включайте переменные интерполяции в строках с двойными кавычками.