Я вошел в систему как root Однако, я пытаюсь запустить java-программу из сценария bash с использованием другого пользователя с именем marshell. Я получаю следующую ошибку, не уверен, что я делаю неправильно?Как запустить команду bash в качестве обычного пользователя?
#!/bin/bash
sudo su marshell <<'EOF'
CP=/home/marshell/sanity_test_scripts/ # The classpath to use
java -cp $CP JavaRunCommand $1 $2 $3 $4 $5 $6 $7 $8 $9 ${10}
EOF
Обновлено:
#!/bin/bash
su marshell <<EOF
CP=/home/marshell/sanity_test_scripts/US_SOUTH/YP/DataWorks/free
java -cp "$CP" JavaRunCommand "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8" "$9" "${10}"
EOF
Ошибка:
[email protected]:bash runbash_marshell.sh https://api.xyz.net [email protected] pass AllServices test Data free data-monitor Y00 UKLONDON
runbash_marshell.sh: line 5: warning: here-document at line 3 delimited by end-of-file (wanted `EOF')
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at JavaRunCommand.main(JavaRunCommand.java:308)
bash: line 2: EOF: command not found
Хотя я не могу найти acutal ошибку, musn't процитировать 'EOF', если вам нужны ваши позиционные параметры расширены. Во всяком случае, это лучший подход: 'java -cp $ CP JavaRunCommand" $ @ "' и не забудьте выставить комментарий «EOF» в вашем случае: 'sudo su marshell << EOF' – whoan
Почему вы используете' sudo' если вы уже вошли в систему под учетной записью root? –
runbash_marshell.sh: строка 5: предупреждение: здесь-документ в строке 2, ограниченный конечным файлом (требуется «EOF») ................ bash: строка 3: EOF: команда не найдена @ja Я обновил свой код, как было предложено, и он работает, но я все еще вижу предупреждение выше, не уверенное почему? – user3846091