Как я могу запускать команды в сценарии bash с префиксом sudo, но на основе флага?

find. -maxdepth 1 -type f | awk 'END {printf("%d %s%s\n", NR, "file", (NR > 1) ? "s" : "")}'

Пояснение:

  1. find. -maxdepth 1 -type f-искать все файлы в текущем каталоге.
  2. awk 'END {printf("%d %s%s\n", NR, "file", (NR > 1) ? "s" : "")}'
    • NR= количество строк, полученных от программы find, равное количеству файлов.
    • (NR > 1) ? "s" : "")-если количество строк (файлов )больше 1, добавить окончание sк слову file.
0
04.12.2019, 05:46
1 ответ

В системах Linux доступ к Docker обычно закрыт группой docker, которая имеет доступ на запись к сокетам Docker:

% stat /var/run/docker.sock
  File: /var/run/docker.sock
  Size: 0           Blocks: 0          IO Block: 4096   socket
Device: 17h/23d Inode: 831         Links: 1
Access: (0660/srw-rw----)  Uid: (    0/    root)   Gid: (  999/  docker)
Access: 2019-12-03 15:41:42.633241981 +0900
Modify: 2019-11-28 15:49:03.877925150 +0900
Change: 2019-11-28 15:49:03.877925150 +0900
 Birth: -

Пользователям, являющимся членами этой группы, не нужно sudoдля выполнения команд docker.


Однако вы можете использовать такую ​​функцию-оболочку:

if [[ $IS_MAC_OS = 1 ]]
then
    sudo_or_not () {
        "$@"  # just run the arguments
    }
else
    sudo_or_not () {
        sudo "$@"  # run the arguments with sudo
    }
fi

sudo_or_not docker run foo/bar

Или просто оберните dockerсебя:

if [[ $IS_MAC_OS = 1 ]]
then
    docker () {
        command docker "$@"  # just run the actual docker command with arguments
    }
else
    docker () {
        sudo docker "$@"  # run docker with sudo
    }
fi

docker run foo/bar
2
28.01.2020, 02:29

Теги

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