任意の構文で何かを行うことはできません。括弧はメタ文字です これらはパーサーにとって特別な意味を持つため、有効な名前として使用する方法はありません .シェルを拡張する最善の方法は、関数を定義することです。
これは基本的な echo
になります 常に同じファイルに書き込むラッパー:
f() {
echo "[email protected]"
} >a.txt
これはほぼ同じですが、さらに stdin を処理します - echo's
を犠牲にします -e
と -n
オプション:
f() {
[[ ${1+_} || ! -t 0 ]] && printf '%s\n' "${*-$(</dev/fd/0)}"
} >a.txt
として呼び出すことができます
f arg1 arg2...
または
f <file
関数には、他のコマンドと同じ方法で引数が渡されます。
2 番目のエコーに似たラッパーは、最初の引数が設定されているか、非 tty からの stdin を最初にテストし、条件付きで、設定されている場合は位置パラメータまたは stdin を使用して printf を呼び出します。テスト式は、引数がゼロで、ファイルからのリダイレクトがない場合を回避します。この場合、Bash はターミナルの出力を展開しようとし、シェルをハングさせます。
はい、あなただけが F sth
で呼び出す必要があります :
F()
{
echo "$1" > a.txt
}
詳細はこちら
F () {
echo "$1" > a.txt
}
呼び出すときに括弧を使用しません。これはあなたがそれをどのように呼ぶかです:
F "text to save"
crontab ファイルを変更した後に cron を再起動しますか?
Java が 'localhost:10.0' を DISPLAY 変数の値として使用して X11 ウィンドウ サーバーに接続できない