Eu tenho um pipeline assim:
command1 | command2
Existe uma maneira de rastrear os dois comandos simultaneamente?
Bash não executa divisão de palavras em globbing nestes casos:
var=$value # simple variable
declare -A hash
key="key with a space"
hash[$key]=$value # index of an associative array
arr=$(echo "1 2 3") # word splitting does happen here
[[ ]]
var="one two"
if [[ $var = *" "* ]]; then ... # check if var has a space in it
if [[ $(echo "one two") = $var ]]; then # use the output of command substitution to compare with var
(( ))
((sum = $(echo "99 + 1"))) # assigns 100 to sum
cat <<< * # gives '*' as the output
Existe uma lista definitiva de casos em que o Bash executa ou não a divisão e a globagem de palavras?
Eu tenho um monte de arquivos de log e quero fazer tail -f
um loop neles de forma que, quando eu pressionar Ctrl-C, a corrente tail -f
seja eliminada e eu prossiga para o próximo arquivo de log:
for log in *.log; do
printf '%s\n' "Tailing log '$log'; press Ctrl-C to skip to the next"
tail -f "$log"
done
O problema é que pressionar Ctrl-C mata o próprio loop. Como posso restringir o sinal de interrupção apenas ao processo filho, tail
neste caso?
Eu escrevi um script que deve obter vários nomes de host de algum lugar e executar um comando em cada um desses hosts:
ssh "$host" some command
Tenho a configuração necessária para fazer ssh
conexões sem a necessidade de senha. No entanto, às vezes encontramos um host que precisa de uma senha e o script trava.
Existe uma maneira de fazer o ssh expirar enquanto espera por uma senha? Eu não quero usar o timeout
comando.