Comentários
Resposta
Para responder à pergunta colocada no título sucintamente:
if [[ "$foo" -lt "$bar" ]]; then echo "$foo is less than $bar" fi
Os testes para comparações de inteiros são:
n1 -eq n2 True if the integers n1 and n2 are algebraically equal. n1 -ne n2 True if the integers n1 and n2 are not algebraically equal. n1 -gt n2 True if the integer n1 is algebraically greater than the integer n2. n1 -ge n2 True if the integer n1 is algebraically greater than or equal to the integer n2. n1 -lt n2 True if the integer n1 is algebraically less than the inte- ger n2. n1 -le n2 True if the integer n1 is algebraically less than or equal to the integer n2.
Usando e. g. <
ou >
faz uma comparação de pedido ASCII, então [[ 0100 < 100 ]]
será verdadeiro.
Comentários
- Stephen Harris estava certo ao dizer que eu havia cometido um erro de digitação, e você estava certo ao dizer que usei sintaxe incorreta. No entanto, mesmo depois de corrigir os dois problemas, nenhum dos scripts funciona ainda. /:
- Adicione
set -x
na parte superior do seu script e execute-o com ele no lugar. Isso mostrará a você o que o script está realmente fazendo, para que você possa comparar com o que pensa que ele ' está fazendo e edite de acordo.
Resposta
Bem, eu corrigi o erro de digitação, que certamente estava quebrando o programa, e Eu consertei a sintaxe do operador, também definitivamente quebrando. No entanto (e isso pode parecer ridículo), depois de corrigir esses problemas, realizei a valid=${#validCheck}
operação manualmente para testar o comprimento da string apenas no caso e descobri que o comprimento do diretório tinha na verdade 45 caracteres, não 46. Sinto-me um idiota agora, mas estou feliz que o problema tenha sido resolvido, pois posso passar para funções mais urgentes. Obrigado por suas correções aos meus erros de digitação e obrigado richard por sua sugestão de ferramentas chroot jail.
valid=${#vaidCheck}
– Isso dizvaidCheck
; deve servalidCheck
chroot
prisão ou contêiner. Existem algumas boas ferramentas para permitir que você faça isso. Usar as ferramentas de baixo nível é complicado e desnecessário; dê uma olhada em uma ferramenta de alto nível como a janela de encaixe. Ainda não usei o docker, mas pode ser o que você precisa. Eu useichroot
ferramentas de prisão e elas funcionam bem, mas faço algumas pesquisas sobre os problemas de segurança (para chroot e contêineres). Ether funcionará melhor do que qualquer coisa que possamos fazer por nós mesmos.