Dalam bash saya bisa melakukan hal berikut:
if [ -f /tmp/test.txt ]; then echo "true"; fi
Namun, jika saya tambahkan sudo
di depan, itu tidak berfungsi lagi:
sudo if [ -f /tmp/test.txt ]; then echo "true"; fi
-bash: syntax error near unexpected token `then'
Bagaimana saya bisa membuatnya bekerja?
bash
command-line
sudo
prompt
m33lky
sumber
sumber
sudo
hanyatest
dan / atau hanyaecho
. Bukan keseluruhanif
pernyataan.if sudo test
? Ya, itu akan lebih baik. Saya tidak dapat menggunakantest
tanpaif
, karena mengatur kode keluar jika tidak.Jawaban:
sudo
mengeksekusi argumennya menggunakanexec
, bukan melalui shell interpreter. Oleh karena itu, ini terbatas pada program biner aktual dan tidak dapat menggunakan fungsi shell, alias, atau builtin (if
adalah builtin). Perhatikan bahwa opsi-i
dan-s
dapat digunakan untuk mengeksekusi perintah yang diberikan dalam login atau shell non-login, masing-masing (atau hanya shell, secara interaktif; perhatikan bahwa Anda harus melarikan diri dari tanda titik koma atau mengutip perintah).sumber
-i
atau-s
, pernyataan jika akan dievaluasi dengan benar?Coba panggil baris sebagai argumen string melalui shell.
sumber