'Обязательные' фигурные скобки Bash

Как указано enzitib,tsocks может использоваться для использования прокси SOCKS с yum.

Чтобы быть более подробным, можно использовать его как это:

$ export TSOCKS_CONF_FILE=$HOME/.tsocks.conf
$ cat .tsocks.conf
server = 127.0.0.1
server_port = 1080
$ tsocks yum ...

По умолчанию tsocks использует версию 4 SOCKS - но можно настроить 5 с помощью 'server_type' директивы. Для опций пользователя/пароля существуют директивы 'default_user'/'default_pas и переменные среды TSOCKS_USERNAME/TSOCKS_PASSWORD.

3
23.10.2013, 04:09
3 ответа

Я сделал бы это с массивами:

$ foo=( b c ); bar=( e f ); for i in {0..1}; do echo a${foo[$i]}d${bar[$i]}; done
abde
acdf

Я предполагаю, что Ваш фактический вариант использования немного более сложен, поэтому если Вы заполняете массивы с помощью другой команды и не обязательно знаете их размер, можно использовать:

foo=( b c ); bar=( e f ); for i in $(seq 0 $((${#foo[@]}-1))); do 
   echo a${foo[$i]}d${bar[$i]}; 
done
3
27.01.2020, 21:23

Это - глупый ответ, но здесь это так или иначе:

$ echo a{b,c,d}e{f,g,h} | awk 'BEGIN {N=3;} { for (i=0; i<N; i++) { print $(i*N+i+1) } }'

$ echo a{b,c,d,1}e{f,g,h,2} | awk 'BEGIN {N=4;} { for (i=0; i<N; i++) { print $(i*N+i+1) } }'

$ echo a{b,c,d,1,A}e{f,g,h,2,Z} | awk 'BEGIN {N=5;} { for (i=0; i<N; i++) { print $(i*N+i+1) } }'
0
27.01.2020, 21:23

Вы не можете изменить способ, которым работают фигурные скобки.

Если существует строка, которая не появляется в тексте, говорит ,, можно применить последовательные строковые замены к массиву:

a=(,b,e @c,f)
a=("${a[@]/,/a/}")
a=("${a[@]/,/d}")
echo "${a[@]}"

Цикл был бы более ясным все же. Если Вы хотите засунуть части вместе, можно использовать разделитель, который не делает eappear в строках, говорит , который был бы специальными внутренними фигурными скобками так или иначе.

a=(); IFS=,; set -f
for x in b,e c,f; do
  a+=(a${x%*,}d${x#*,})
done

Другой подход должен определить два параллельных массива.

version=(test main)
files=(AppTest.java App.java)
for ((i=0; i<${#files}; i++) rm "src/$version[i]/java/org/sonatype/mavenbook/files[i].java"

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

rmapp () { rm "src/$1/java/org/sonatype/mavenbook/$2.java"; }
0
27.01.2020, 21:23
  • 1
    я думаю функция, является самым чистым решением. Все те циклы выглядят ужасными (который является, почему я не могу upvote этот весь ответ, увы). –  Ian D. Allen 24.10.2013, 05:15

Теги

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