Подтвердить что ты не робот

Сгенерируйте script в bash и сохраните его в местоположении, требующем sudo

В bash я могу создать script с таким документом, как, например, на этом сайте: http://tldp.org/LDP/abs/html/abs-guide.html#GENERATESCRIPT

(
cat <<'EOF'
#!/bin/bash
#? [ ] / \ = + < > : ; " , * | 
#/ ? < > \ : * | "
#Filename="z:"${$winFn//\//\\}
echo "This is a generated shell script."
App='eval wine "C:\Program Files\foxit\Foxit Reader.exe" "'$winFn'"'
$App
EOF
) > $OUTFILE

Если мой $OUTFILE - это каталог, требующий привилегии sudo, где я могу поместить команду sudo или что еще я могу сделать, чтобы она работала?

4b9b3361

Ответ 1

Вы не можете просто поставить sudo перед cat, потому что > $OUTFILE пытается открыть $OUTFILE в текущем процессе оболочки, который не работает как root. Вам нужно открыть этот файл, чтобы произойти в суб-процессе sudo-ed.

Вот один из способов сделать это:

sudo bash -c "cat >$OUTFILE" <<'EOF'
#!/bin/bash
#? [ ] / \ = + < > : ; " , * | 
#/ ? < > \ : * | "
#Filename="z:"${$winFn//\//\\}
echo "This is a generated shell script."
App='eval wine "C:\Program Files\foxit\Foxit Reader.exe" "'$winFn'"'
$App
EOF

Ответ 2

Вот как я это сделаю:

sudo tee "$OUTFILE" > /dev/null <<'EOF'
foo
bar
EOF