Есть несколько проблем с вашим скриптом.
Чтобы выполнить простую проверку «годен/не годен» с помощью grep, рассмотрите следующую идиому:
fail=$(route -n | grep -q '192.168.38.2'; echo $?)
Затем проверьте результат своей команды следующим образом:
if [ "$fail" -ne 0 ]; then
# Handle failure
else
# Handle success
fi
Эту идиому можно упростить до чего-то вроде:
if [ $(route -n | grep -q '192.168.38.2'; echo $?) ] then
...
или
route -n | grep -q '192.168.38.2'
if [ "$?" ]; then
...
Тем не менее, я бы рекомендовал потратить время на то, чтобы понять команды, которые вы используете, а не просто копировать то, что вы не понимаете (напримерgrep -v grep
).
X-сервер должен быть активен, когда вы выполняете эту команду с TTY.
export DISPLAY=:0 # Your Display
sleep 1 && setxkbmap us # Change keyboard layout
Поэтому я рекомендую вам выполнить эту команду, а затем немедленно переключиться на X-дисплей, чтобы изменения вступили в силу.
Такое поведение можно увидеть в команде xclip -o
. При выполнении на TTY он ждет, пока X-сервер не станет активным, чтобы распечатать содержимое основного буфера обмена.