Você tem 2 possibilidades simples. A primeira é parar de citar o bloco de
texto sendo passado para sudo su
, removendo as aspas do <<
string terminadora (ou seja, use <<HERE
). Neste caso, todas as variáveis $ e
back-tick ('') execuções dentro do bloco serão avaliadas antes de serem passadas
para sudo su
, então você precisa escapar deles com \$
por exemplo. O resultado é:
sudo su <<HERE #this will give you super user permissions
echo "Got root access"
echo "First line of the file is as below :"
head -1 $filename
echo "---------------------------------------"
firstline=\$(head -1 $filename)
echo "Repeat : $firstline"
echo $firstline | grep ^"rom" >/dev/null
if test \$? -eq 0
then
ex -s $filename <<'EOF'
1s/^/F/
:wq
EOF
echo "F issue fixed!"
HERE
A segunda possibilidade é mais fácil de ler. Basta aplicar o sudo somente onde
necessário. Você não precisa mais de um bloco de código. O resultado é:
echo "First line of the file is as below :"
sudo head -1 $filename
echo "---------------------------------------"
firstline='sudo head -1 $filename'
echo "Repeat : $firstline"
echo $firstline | grep ^"rom" >/dev/null
if test $? -eq 0
then
sudo ex -s $filename <<'EOF'
1s/^/F/
:wq
EOF
echo "F issue fixed!"