My Bash-Script должен сделать что-то другое, в соответствии с началом переменной. Когда я запускаю следующий сценарий:Linux bash if - elif не работает должным образом
#!/bin/bash
line="__B something"
if [ -n $(echo "$line" | grep "^__A") ]; then
echo "Line __A"
elif [ -n $(echo "$line" | grep "^__B") ]; then
echo "Line __B"
elif [ -n $(echo "$line" | grep "^__C") ]; then
echo "Line __C"
elif [ -n $(echo "$line" | grep "^__D") ]; then
echo "Line __D"
elif [ -n $(echo "$line" | grep "^__E") ]; then
echo "Line __E"
elif [ $(echo "$line" | grep "^__F") ]; then
echo -n "Line __F"
else
echo "something other"
fi
Bash не признает, что начало строки с __B .:
результат:
Line __A
Что случилось с моим сценарием? Благодарим за помощь!
это выглядит, как вы неуместны последним ' -n' – Matthias
Используйте больше кавычек! 'if [-n" $ (echo ...) "]; затем'. Процитировать расширение параметра! (но ваш дизайн в целом неплохой). –
@gniourf_gniourf: если вы попытаетесь удвоить цитату команды * whole * 'echo | grep' (а не только снип, которую вы показываете), вы увидите, что это не так просто, особенно учитывая встроенное пространство в' $ line'. – cdarke