O shell permite que se criem variáveis e que se lhes atribuam valores guardados durante a execução do shell. As variáveis podem ser variáveis locais ou variáveis de ambiente (globais). Os nomes das variáveis podem ser constituídos de quaisquer caracteres alfanuméricos. Para criar e ao mesmo tempo atribuir um valor à variável na mesma operação, usamos o comando set para variáveis locais ou setenv para as de ambiente. No caso do setenv não é usado o sinal de = entre o nome e o valor da variável. O valor de uma variável é acessado através do nome da variável precedido pelo operador $, por exemplo
$ set estado= ``Rio Grande do Sul''
$ echo $estado
Rio Grande do Sul
Neste caso o echo mostra o conteúdo de $estado na tela. Note que o argumento passado para o echo é ``Rio Grande do Sul'' pois o shell já fez a interpolação da variável $estado na cadeia de caracteres correspondente. As variáveis podem ser usadas em qualquer comando no contexto do shell. Para referir-se ao nome de uma variável sem ambiguidade, inclue-se seu nome entre chaves { } , observe
$ set arquivos=``/dados/curso''
$ cp ${arquivos}/aula2.tex /home/alunos
assim o shell procura por uma variável arquivo e concatena o seu valor com o resto da cadeia /aula2.tex e então passa o argumento inteiro para o comando cp. Note que tanto a interpolação de variáveis em seus respectivos valores como a substituição dos curingas numa lista de arquivos (Seção ) é feita pelo shell e o resultado desta operação (em caso de sucesso) é passada ao aplicativo. Nenhum dos aplicativos realmente recebe $estado ou aluno? como argumento, mas o significado que estas expressões tem para o shell. Se for necessário usar caracteres especiais do tipo $, *, ?, [ ] como argumento de aplicativos, usa-se o caracter de fuga precedendo os caracteres especiais. Isto evita que o shell interprete-os. Por exemplo, para lermos a página de ajuda do comando less, que serve para mostrar o conteúdo de um arquivo no terminal, usamos $ less - ? pois não queremos que o shell substitua ? pelo nome de um arquivo com uma só letra (se ? fosse um curinga) mas que o less receba o ? como argumento.
O recurso de substituição da saída padrão (Seção ) pode ser explorado para definir variáveis a partir da saída de aplicativos
$ set sistema=`uname`
$ echo $sistema
Linux
que pode ser extensivamente explorado na construção de scripts do shell.
Algumas variáveis são definidas internamente pelo shell e podem ser usadas durante sua execução. A tabela relaciona parte das variáveis definidas pelo tcsh ao iniciar.
A interpolação de variáveis ocorre sempre que seu nome for invocado diretamente ou entre aspas duplas. Qualquer texto entre aspas simples será interpretado literalmente, sem interpolações. Acompanhe o exemplo abaixo
$ set dia=sexta
$ set aviso=``Ontem foi $dia''
$ echo $aviso
Ontem foi sexta
$ set aviso=``Ontem foi $dia''
$ echo $aviso
Ontem foi $dia
desta forma, as aspas simples fornecem um mecanismo para que as interpolações de variáveis sejam ignoradas, enquanto as duplas permitem que as substituições sejam feitas, preservando a unidade da cadeia de caracteres.
leon 2008-08-19