О сценарии Linux / выходе

Вы не можете сделать это в bash с перенаправлениями, но вы можете сделать что-то вроде это:

$ cat file1
europe|EU
australia|AU
china|CN

$ cat file1 | { IFS=$'\n' read -r -d '' -a a; printf '%s\n' "${a[@]}"; printf '%s\n' "${a[@]}" >teetest; }
europe|EU
australia|AU
china|CN

$ cat teetest
europe|EU
australia|AU
china|CN

Альтернатива:

$ { IFS=$'\n' read -r -d '' -a a; printf '%s\n' "${a[@]}"; printf '%s\n' "${a[@]}" >teetest; } <file1

Или вы можете построить функцию:

$ function teetest { v="$(</dev/stdin)";printf '%s\n' "$v";printf '%s\n' "$v">teetest; }

$ cat file1 |teetest
europe|EU
australia|AU
china|CN

$ cat teetest
europe|EU
australia|AU
china|CN
0
09.03.2019, 10:30
2 ответа

В качестве продолжения John's answerвы можете изменить строку sudoна следующую:

if [ "$(id -un)" != "test" ]; then
    exec sudo -u test "$0" "$@"
    exit
fi

Это повторит выполнение сценария с пользователем . ] test, если это не тест, который уже выполняет его.

0
28.01.2020, 02:19

Первая строка в этом скрипте запускает новую оболочку под идентификатором пользователя testи ожидает выхода из этой оболочки перед выполнением первой команды exportдля изменения пути. Скрипт делает именно то, что вы ему сказали.

4
28.01.2020, 02:19

Теги

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