for (( i = 1; i <= 30; ++i )); do
( cd "directory$i" &&
paste tableNC023.txt tableNC088.txt tableNC102.txt... ) >"./merged_tables/tables_directory$i.txt"
done
Это использует cd
для входа в каталог в подоболочке. Если cd
успешно, paste
используется для создания объединенных данных. Вывод из подоболочки перенаправляется в ваш файл результатов, как и раньше.
Поскольку cd
выполняется в подоболочке, не требуется никаких cd..
, cd -
или cd "$OLDPWD"
, чтобы "отступить" для следующей итерации.
Альтернатива для более аккуратного кода:
tables=( tableNC023.txt tableNC088.txt tableNC102.txt
more tables here )
for (( i = 1; i <= 30; ++i )); do
( cd "directory$i" &&
paste "${tables[@]}" ) >"./merged_tables/tables_directory$i.txt"
done
Мое использование for (( i... ))
вместо for i in {...}
основано исключительно на личных предпочтениях.
Вы можете перейти только на версию, уже предлагаемую CentOS 8, а GCC 6.3.1 не отвечает всем требованиям.
К сожалению, единственный способ установить эту версию GCC, не причиняя вреда вашей системе, — загрузить исходный код, скомпилировать и установить его, например, в. /опт/gcc6
Что касается флагов компиляции, проверьте Fedora или CentOS src.rpms -, вам нужно только добавить--prefix=/opt/gcc6
Обновление :вот как я скомпилировал GCC 4 -7:
Распакуйте его.
(under root/sudo) yum install gcc make glibc-devel gmp-devel mpfr-devel gmp-devel
export CFLAGS="-O2 -march=native -pipe"
export CXXFLAGS=$CFLAGS
cd gcc-6.3.1
mkdir BUILD
cd BUILD
../configure --enable-shared --enable-threads=posix --disable-stage1-checking \
--with-system-zlib --enable-__cxa_atexit --enable-multilib --with-gnu-as \
--with-gnu-ld --enable-languages="c,c++" --without-x --prefix=/opt/gcc \
--disable-libunwind-exceptions --with-gmp=/usr