Existem vários erros.
% bl0ck_qu0te%Você tem espaços aqui, então é necessário incluir isso em "" para evitar um erro e, além disso, adicionou um espaço desnecessário após o sinal de igual. No entanto, tudo o que você fez foi criar uma variável contendo "history | wc -1". Em primeiro lugar, não há "wc -1". Eu acho que você quis dizer "wc -l", que conta as linhas. Em segundo lugar, acho que você queria realmente executar este comando.
Você pode usar:
i=$(history | wc -l)
No entanto, sempre será 0 como resultado, porque você está em uma subcamada.
% bl0ck_qu0te%Você adicionou um espaço após o sinal de igual. Você poderia usar "j = $ i-10", mas isso não vai fazer nenhuma matemática.
Tente algo como:
j=$(echo "${i}-10" | bc -l)
Você provavelmente vai querer escrever uma instrução if para lidar com senários onde eu tiver 10 ou menos.
Tente algo como:
if [[ "$i" -lt "11" ]]; then j="1"; fi% bl0ck_qu0te%
Você não pode usar variáveis aqui. O resultado será # .. # em vez de uma lista de números. Você poderia contornar este problema criando um one-liner para fazer a declaração que é ecoada em uma variável e então usar eval para executá-la. Desta forma, o $ i e $ j já foram substituídos pelos números reais quando o comando é executado.
Ultimamente , toda a abordagem é inútil , porque quando você executa o comando history no shell script, você recebe zero como resultado da contagem , porque você está em um subshell e subshells não relatam seu histórico. Para ver o que quero dizer, execute vários comandos e, em seguida, execute este script:
#!/bin/bash history | wc -l
Como você pode ver, o resultado é 0. Por quê? Porque é a história do subshell, e o subshell não reporta o histórico. Mesmo se você adicionar outros comandos ao script antes do comando history, o resultado será 0.
Comece de novo. Procure editar o arquivo de histórico diretamente como sugerido pelo @kos. Lembre-se de que os comandos do shell atual não são gravados no arquivo até que o shell saia.
Boa sorte.