2016-04-07 29 views
2

Bu yüzden, bir bash kabuk betiğinde komutlar çalıştırıyorum ve SADECE bir değişkende hata çıktısı almak istiyorum. Bastırmak istediğim herhangi bir standart çıktı. Şimdilik şu an ne çalışmam ki. Bu yüzden daha iyi bir fikir bulmaya ve bir cevap bulmaya çalışıyorum. Her şey bastırılmış oluyor gibiBash: Standart çıktıyı bastır, hata çıktısını yakala

ERROR=$(svn switch "$NEW_URL" --accept postpone 1>/dev/null 2>&1) & 

görünüyor:

İşte bir kod örneği var. Herhangi bir yardım takdir edilecektir. Teşekkürler.

+2

Bu, bu sorunun bir kopyasıdır (https://stackoverflow.com/questions/962255/how-to-store-standard-error-in-a-variable-in-a-bash-script) –

cevap

2

Bu şekilde olmalıdır:

error=$({ echo "stdout"; echo "stderr" >&2; } 2>&1 >/dev/null) 
echo "$error" 
stderr 

yani birinci stderr->stdout yönlendirmek ve daha sonra stdout bastırmak için /dev/null stdout yönlendirir.

Emriniz için bu olmalıdır:

error=$(svn switch "$NEW_URL" --accept postpone 2>&1 >/dev/null) 

Ayrıca arka planda komut iterek önlemek için & kaldırmak gerekir.

İlgili konular