Is it possible to define a macro-function in bash so when I write:
F(sth);
bash runs this:
echo "sth" > a.txt;
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
Arbitrary syntax can’t be made to do anything. Parentheses are metacharacters which have special meaning to the parser, so there’s no way you can use them as valid names. The best way to extend the shell is to define functions.
This would be a basic
echowrapper that always writes to the same file:This does about the same but additionally handles stdin – sacrificing
echo's-eand-noptions:Which can be called as
or
Functions are passed arguments in the same way as any other commands.
The second echo-like wrapper first tests for either a set first argument, or stdin coming from a non-tty, and conditionally calls printf using either the positional parameters if set, or stdin. The test expression avoids the case of both zero arguments and no redirection from a file, in which case Bash would try expanding the output of the terminal, hanging the shell.