GNU/Linux >> Belajar Linux >  >> Linux

mendefinisikan makro seperti fungsi di bash

Sintaks sewenang-wenang tidak dapat dibuat untuk melakukan apa pun. Tanda kurung adalah metakarakter yang memiliki arti khusus bagi parser, jadi Anda tidak dapat menggunakannya sebagai nama yang valid . Cara terbaik untuk memperluas shell adalah dengan mendefinisikan fungsi.

Ini akan menjadi echo dasar pembungkus yang selalu menulis ke file yang sama:

f() {
    echo "[email protected]"
} >a.txt

Ini hampir sama tetapi juga menangani stdin - mengorbankan echo's -e dan -n opsi:

f() {
    [[ ${1+_} || ! -t 0 ]] && printf '%s\n' "${*-$(</dev/fd/0)}"
} >a.txt

Yang bisa disebut sebagai

f arg1 arg2...

atau

f <file

Fungsi dilewatkan argumen dengan cara yang sama seperti perintah lainnya.

Pembungkus mirip-gema kedua pertama-tama menguji argumen set pertama, atau stdin yang berasal dari non-tty, dan secara kondisional memanggil printf menggunakan parameter posisi jika disetel, atau stdin. Ekspresi pengujian menghindari kasus argumen nol dan tidak ada pengalihan dari file, dalam hal ini Bash akan mencoba memperluas output terminal, menggantung shell.


Ya, hanya Anda yang harus memanggilnya dengan F sth :

F()
{
  echo "$1" > a.txt
}

Baca selengkapnya di sini.


F () {
  echo "$1" > a.txt
}

Anda tidak menggunakan tanda kurung saat memanggilnya. Ini adalah bagaimana Anda menyebutnya:

F "text to save"

Linux
  1. Skrip bash(I)

  2. Bagaimana Cara Mendefinisikan Pembatas 'tab' Dengan 'potong' Di Bash?

  3. Menyortir dalam bash

  1. perintah ekspor bash

  2. Tentukan fungsi di baris perintah unix/linux (mis. BASH)

  3. (reverse-i-search) di Bash

  1. Variabel Ekspor Bash

  2. Perbandingan tanggal di Bash

  3. Jalankan perintah bash pada pipa jenkins