Olá, alguém sabe me dizer como uma variável ou objeto em java pode receber o conteúdo de uma variável em shell e vice-versa?
Outra pergunta é: como fazer para uma variável ou objeto em java poder receber o tamanho de um arquivo qualquer (kb ou MB).
Olá, alguém sabe me dizer como uma variável ou objeto em java pode receber o conteúdo de uma variável em shell e vice-versa?
Outra pergunta é: como fazer para uma variável ou objeto em java poder receber o tamanho de um arquivo qualquer (kb ou MB).
a) Para receber uma variável do shell, pode-se passá-la pela linha de comando para o programa Java.
Exemplo: (Linux)
#!/bin/bash
TESTE=/usr/bin/java
java -Dvariavel=${TESTE} -classpath . MinhaClasse
e no programa Java:
...
String variavelTeste = System.getProperty ("variavel");
Além do “-D” você pode passar parâmetros para o programa, mais ou menos como se faz em C (só que eles começam a partir do [0], não do [1] como em C).
public static void main(String[] args)
Para setar uma variável do shell, não dá (exceto pela variável que representa o código de retorno do java).
mesmo que vc pudesse setar uma variavel de ambiente do shell, esta valeria para aquele subshell que a maquina virtual abriria, não o shell corrente. com o fim do subshell a variavel desapareceria
Na verdade, as únicas coisas que podem setar variáveis do shell “permanente” são script shells, e ainda por cima usando a declaração “EXPORT” se for o caso do Bourne/Korn/bash shell.
TESTE=/usr/bin/java
só permanece dentro do shell que está sendo usado.
export TESTE=/usr/bin/java (Korn/bash shell)
ou
TESTE=/usr/bin/java ; export TEST (Bourne/Korn/bash shell)
só podem ser feitas por shells.
Uma forma meio radical de setar uma variável de shell é fazer com que o programa executado gere apenas UMA linha de saída, e usar as aspas invertidas, algo como:
BASENAME=basename /usr/bin/joe
onde basename é um programa que pega o seu primeiro parâmetro , remove tudo que vai até a última barra, e imprime apenas o nome-base (que nesse caso é “joe”. A instrução acima seria equivalente a:
BASENAME=joe