GNU/Linux >> Belajar Linux >  >> Linux

Arahkan ulang input standar secara dinamis dalam skrip bash

Input standar juga dapat diwakili oleh file perangkat khusus /dev/stdin , jadi gunakan itu sebagai nama file.

file="/dev/stdin"
./myscript < "$file"

Pertama-tama stdin adalah deskriptor file 0 (nol) daripada 1 (yang merupakan stdout).

Anda dapat menggandakan deskriptor file atau menggunakan nama file secara kondisional seperti ini:

[[ some_condition ]] && exec 3<"$filename" || exec 3<&0

some_long_command_line <&3

Perhatikan bahwa perintah yang ditampilkan akan mengeksekusi exec kedua jika kondisi salah atau exec pertama gagal. Jika Anda tidak ingin potensi kegagalan melakukan itu maka Anda harus menggunakan if / else :

if [[ some_condition ]]
then
    exec 3<"$filename"
else
    exec 3<&0
fi

tetapi pengalihan selanjutnya dari deskriptor file 3 akan gagal jika pengalihan pertama gagal (setelah kondisinya benar).


(
    if [ ...some condition here... ]; then
        exec <$fileName
    fi
    exec ./myscript
)

Dalam subkulit, alihkan stdin secara kondisional dan jalankan skrip.


Linux
  1. Redirect Semua Stderr Perintah Selanjutnya Menggunakan Exec?

  2. Bash Script:Periksa Apakah File Adalah File Teks?

  3. Bagaimana Cara Menambahkan Data Ke Buffer Dalam Script Shell?

  1. Menjalankan File Skrip Melalui Ssh Melalui Sudo?

  2. Bagaimana Cara Memeriksa Substring Di Shell Script Bash?

  3. Bagaimana saya tahu nama file skrip dalam skrip Bash?

  1. Bagaimana cara menyorot skrip Bash di Vim?

  2. Bandingkan jumlah md5 dalam skrip bash

  3. Bash loop unzip skrip file yang diberi kata sandi