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"