Criando um argumento no unix

0

Esta pode ser uma pergunta idiota.

Mas, como você cria um argumento no unix?

Eu tenho que criar um programa shell que inclua um userid como um argumento para ver o status da sessão de outro usuário.

Meu problema é com o "pegar um userid como um argumento"

Isso é para o bash btw.

    
por shawn edward 21.02.2016 / 07:07

2 respostas

2

Para shells, os argumentos são conhecidos como parâmetros posicionais, ou seja, você pode inseri-los um após o outro após o nome do arquivo e alcançar cada um deles pela posição em que estão inseridos.

O parâmetro posicional 0 é sempre o nome do script (arquivo) e os argumentos dados a partir de 1. Então você pode obter o primeiro argumento por $1 , segundo por $2 e assim por diante.

Por exemplo:

% foo () { printf '%s\n' "First: "$1" and Second: "$2"" ;}  

% foo spam egg
First: spam and Second: egg

Para usá-lo em uma instrução if , considerando apenas o primeiro argumento $1 (o mesmo vale para outros argumentos também):

if [ "$1" = "foo" ]; then
    ## Dome something
else
    ## Do something else
fi

Digamos que você o tenha em um script chamado foobar.sh . Agora você pode executar o script como:

./foobar.sh foo
./foobar.sh bar
./foobar.sh blahblah

e os valores de $1 serão foo , bar , blahblah respectivamente em três casos.

    
por 21.02.2016 / 07:15
2

Se eu inferir corretamente de seus comentários sobre a resposta de heemayl, você está procurando uma maneira de obter o usuário atual, use $USER .

A variável $USER retorna o usuário atual na forma de string.

#!/bin/bash
if [ "$USER" == <something else> ]; then
    #do something IF the current user is equal to whatever string you compare it to
else
    #do something else IF the current user is not equal to whatever string you compare it to
fi

PS: O Unix SE não é o lugar certo para colocar perguntas sobre o dever de casa. Questões legítimas à parte, se você tiver dúvidas sobre um tópico, provavelmente é melhor perguntar ao seu professor primeiro.

    
por 21.02.2016 / 11:53