MySQL geri yükleme komut dosyasında daha önce giriş için oluşturulmuş bir MySQL formunu kullanıyorum. Bu dosya adı komut satırında bir argüman olarak verilmiştir ve gziplenmiş olabilir veya olmayabilir. Dosyayı mysql deyimine girdi olarak kullanmak istiyorum ancak dosyayı değiştirmek / değiştirmek değil, sadece içeriği okumak.
(Sevdiğim) mysql komutuna giriş için aşağıdaki kodu kullanıyorum:
mysql -u $user -p"$pass" $dbname <( [[ "${mysqldumpfile: -3}" = ".gz" ]] && gzip -d -c "${mysqldumpfile}" || cat "${mysqldumpfile}" )
Bu yüzden mysql dump dosya ismi ".gz" ile biter, sonra stdout'a gunzip, aksi halde stdout'a bayılırım. Her ikisinden de stdout, mysql komutuna stdin olarak kullanılır.
Bu bir UUOC mi? Kedi kullanmamak için bir yolu var mı?
Bunu yapmanın başka bir yolu var mı (bir hatta)? Açık olmak gerekirse, if / then / else / deyimini kontrol etmek ve iki farklı mysql komutu yapmak istemiyorum. İki farklı giriş kullanabilen bir komut satırını seviyorum.
EDIT: zcat -fVeriler sıkıştırılmamışsa hem açacak hem de kedi veya sadece kedi olacağı için bu en iyi örnek değil. <( test && do_this_command_as_input || cat this_is_the_input )Kedi kullanmanın başka bir yolu olup olmadığını hala bilmek istiyorum .
Biri bundan bahsetmeden önce ... kullanarak bir mysql komut satırına giremezsiniz <( ).