Одно решение, которое я вижу, состоит в том, чтобы дать каждому пользователю их собственную группу (уже становящийся стандартным на различных полях Linux), и устанавливающий значение по умолчанию umask для системы к 027 (отображается на g-w, o-rwx) в /etc/profile
или /etc/login.defs
(для PAM). Наконец, измените "частные" каталоги пользователей на 0700 (u=rwx, пойдите =), и их корневой каталог к 0750 (u=rwx, g=rx, o =).
Это все еще позволит Вашим пользователям управлять его полномочиями, но значение по умолчанию будет препятствовать тому, чтобы другие пользователи видели содержание.
Затем это должно только быть вопросом:
while read discard x y discard; do
sed "s/A/$x/g;s/B/$y/g" < daily.template > "daily.$x-$y.inp"
done < data.dat
read
команда считает одну строку за один раз из data.dat
, поместите первое поле (поля, являющиеся пробелом, разделенным, и где обратная косая черта может использоваться для выхода из поля или разделителя строки) в переменной $discard
, второе в $x
, третье в $y
и остальная часть полей в $discard
.
Можно сохранить два столбца в gawk
печать $2
и $3
. Затем извлеките тех, которые в отдельных переменных a1
и a2
использование col
. Оттуда на, это просто к sed
эти две переменные шаблона.
Для этого задания можно использовать термины termsql:
while read a b; do
termsql -xwi daily.template "update tbl set COL2='$a' where COL1='h20'; update tbl set COL1='$b' where COL0='sza'" > daily$a$b.inp
done < <(termsql -wi data.dat "select COL1,COL2 from tbl")
Преимущество: Если Вы знаете SQL, Вам не нужно изучать новый синтаксис.
Вы можете получить термины termsql здесь: https://gitorious.org/termsql
do
, поэтому Вы не вошлиdo
как в тексте я записал. Одно возможное объяснение состоит в том, что Вы вошлиdo<Cr>
(<Cr>
будучи невидимыми символами возврата каретки, иногда добавляемыми в конце строки при работе над операционными системами Microsoft). Который является, почему я предложил, чтобы Вы удостоверились, что пишете файл в формате Unix. При редактировании файла сvim
, ввести:set ff=unix
– Stéphane Chazelas 05.09.2013, 01:22do
проблема. Но, если я хочу обработать следующий код:while read discard sza dens_h2o discard; do sed "s/SZA/$sza/g;s/DENS_H2O/$dens_h2o/g" < daily_SUR.template > daily_SUR.inp echo $sza $dens_h2o done < datenum_sza_dens_lowRes_test.dat
Я получил сообщение об ошибке::not foundy_loop.test.sh: 4: :No such file or directory
и затем корректное эхо переменных... – user46489 06.09.2013, 15:30