«bash» etiketlenmiş sorular

Diğer Bourne / POSIX mermilerinin aksine, GNU'dan Bourne Again SHell'e özgü sorular. Genel olarak Unix kabukları hakkında sorular için / shell etiketini kullanın.

3
Kaynak lib / * neden çalışmıyor?
Aşağıdaki klasör yapısını içeren küçük bir program var: - main.sh - lib/ - clean.sh - get.sh - index.sh - test.sh Her dosyada kullandığım tek bir işlev var main.sh. main.sh: source lib/* get_products clean_products make_index test_index Yukarıda ilk iki işlev çalışır, ancak ikincisi çalışmaz. Ancak ben yerine source lib/*: source lib/get.sh …
11 bash  source 


4
Dizinler dışındaki dosyalar arasında dolaşın
Herhangi bir alt dizinler hariç geçerli dizindeki her dosyaya bir şeyler yapmak için benim komut dosyası gerekir. Örneğin, geçerli yolda, 5 dosya vardır, ancak 1 tanesi bir klasördür (bir alt dizin). Komut dosyam, söz konusu komut dosyasını çalıştırırken bağımsız değişken olarak verilen bir komutu etkinleştirmelidir. Yani "bash script wc -w", …
11 bash  for 

2
bash değişkeni 0x00 değişkenini saklayamaz
Ben dd ile bazı hile yapmaya çalışıyorum. Ben dd içine boru için "başlık" adlı bir değişkende bazı hexvalues ​​saklamak mümkün olacağını düşündüm. Değişken olmadan ilk adım şuydu: $ echo -ne "\x36\xc9\xda\x00\xb4" |dd of=hex $ hd hex 00000000 36 c9 da 00 b4 |6....| 00000005 Bundan sonra bunu denedim: $ header=$(echo …
11 linux  bash  shell-script  dd 

2
Neden bir zombi çocuğunu bekliyor?
Farklı kaynakları araştırıyorum, ancak çocuk hasatının anatomisinin iyi bir tanımını bulamıyorum. Bu anlamak istediğim şeyin basit bir örneğidir. $ cat <( sleep 100 & wait ) & [1] 14247 $ ps ax -O pgid | grep $$ 12126 12126 S pts/17 00:00:00 bash 14248 12126 S pts/17 00:00:00 bash 14249 …


2
`Yerel 'çıkış kodunu yakalama nasıl yapılır?
Projemde şu snippet var: local output="$(bash "${1##*/}")" echo "$?" localAncak kaldırma işlemi local, $?değişkenin doğru davranmasına neden olduğu için sıfır olarak yazdırır : bu, alt koddan çıkış kodunun alınmasıdır. Benim sorum: çıkış değerini yakalarken bu değişkeni nasıl yerel tutabilirim?


1
asla -a veya -o operatörünü ``
Stéphane Chazelas şunu yazdı: gibi birkaç kural her zaman değişkenleri alıntıla asla -aveya -ooperatörünü kullanmayın (birkaç [komut ve &&ve ||kabuk işleçlerini kullanın) [POSIX mermileriyle güvenilir olun . Neden " -aveya -ooperatörünü asla kullanmıyorsunuz ?" "Birkaç [komut ve &&ve ||kabuk işleçlerini kullan)" nasıl yapabilirim ?
11 bash  shell  test 

3
Dosyayı kaldırın, ancak yalnızca bir simge bağlantısı varsa
İdeal olarak böyle bir komut istiyorum rm --only-if-symlink link-to-file çünkü dosyayı işaret eden sembolik bağlantı yerine yanlışlıkla dosyayı sildim. Bu özellikle sudo söz konusu olduğunda kötü olabilir. Şimdi tabii ki ls -algerçekten bir symlink ve böyle emin olmak için yapmak ama bu operatör hatası (benzer şekilde adlandırılmış dosya, yazım hatası, …
11 bash  command-line  rm 


3
bash betiğinin komuttaki geçici değeri
Aşağıdaki komut gibi, if true; then IFS=":" read a b c d e f <<< "$test" Kitap, değer atama komutu ( IFS ":") ana komuttan ( read a b c d e f <<< "$value") önce kullanıldığında , değerinin ana komutta geçici olarak etkili olduğunu söyler . Yani, readkomut sınırlayıcı …

2
Alt kabuk, çocuk kabuğu ile aynı şey midir?
Bu iki isim var: bir alt kabuk ve bir çocuk kabuğu . Evet, bunlardan herhangi biri tarafından bir alt süreç başlatılacaktır: sh -c 'echo "Hello"' ( echo "hello" ) echo "$(echo "hello") echo "hello" | cat Hepsi aynı mı ve aynı adı mı paylaşıyor? Hepsi aynı mülkü paylaşıyor mu? POSIX …

2
! $ Komut dosyasında kullanılamaz mı?
Sadece bunun neden çalışmadığını merak ediyorum #!/bin/bash ls /bin ls !$ ls /binİki kez koşmayı bekliyorum , ancak ikincisi !$yorumlanmadığı için hataları arttırıyor Bir şey mi kaçırdım, yoksa !$yalnızca komut satırında mı çalıştım ? man bash(Mac'ta) içinde ilgili kısmı bulamadım
11 bash 

2
& 6 ve / dev / fd / 6 arasındaki fark nedir?
Dosya tanımlayıcı 6'dan okumak için <&6veya </dev/fd/6(aka /proc/self/fd/6) kullanabilirsiniz. Genellikle her ikisi de eşit derecede iyi çalışır. Ancak, bu dosya tanımlayıcı bir soket olursa, garip şeyler olur. Örneğin: $ bash -c 'ls -l /dev/fd/6;cat /dev/fd/6' 6</dev/tcp/localhost/12345 lrwx------ 1 michas michas 64 Jan 10 19:50 /dev/fd/6 -> socket:[315010] cat: /dev/fd/6: No …

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.