Eu tenho o seguinte script bash que agora estou tentando converter para executar usando o shell do sistema:
1 #!/bin/sh
2 #testtotal
3 lines="$(crontab -l | awk '{if(NR>2)print}')"
4 echo "1..$lines"
5 counter=1
6 while read p; do
7 if [[ -x "$p" ]]
8 then
9 echo "ok $counter - $p is executable"
10 else
11 echo "not ok $counter - $p is not executable or found"
12 fi
13 counter=$((counter+1))
14 done < <(crontab -l | awk '{if(NR>2)print}' | awk '{print $6}')
quando eu corro usando "sh" ele falha com o erro:
ctest: line 14: syntax error: unexpected redirection
Você pode me dizer como adaptar isso para rodar em bin/sh?
Na linha 7, em vez de
[[ ... ]]
você quer[ ... ]
outest ...
(certificando-se de sempre, sempre, sempre citar todas as variáveis - o que você já fez, mas não[
é opcional e vale a pena repetir para todos os outros leitores).Na linha 14, você pode usar um here-document combinado com uma substituição de comando para substituir a substituição do processo:
Dessa forma, você evita executar o
while read p
loop em um subshell devido à canalização nele, para que suas variáveis sobrevivam.Isso deve fazer isso para tornar este POSIX compatível.