Q
bashの
7
A
答えて
14
何かを行うための任意の構文を行うことはできません。括弧はメタ文字でパーサにとって特別な意味を持ちますので、有効なの名前はとして使用できません。シェルを拡張する最善の方法は、関数を定義することです。
これは常に同じファイルに書き込みを行い、基本的なecho
ラッパーのようになります。これは、ほぼ同じませんが、さらに標準入力を処理
f() {
echo "[email protected]"
} >a.txt
からecho's
-e
と-n
オプション犠牲:
f() {
[[ ${1+_} || ! -t 0 ]] && printf '%s\n' "${*-$(</dev/fd/0)}"
} >a.txt
を
f arg1 arg2...
0123と呼ぶことができます。の
または
f <file
機能は、他のコマンドと同じように引数を渡されます。
set first argumentまたはnon-ttyからのstdinを最初にテストし、条件付きでsetfまたはstdinのいずれかの位置パラメータを使用してprintfを呼び出します。テスト式は、引数がゼロでもファイルからのリダイレクトもしないようにします。この場合、Bashはターミナルの出力を拡大してシェルを掛けようとします。
4
F() {
echo "$1" > a.txt
}
あなたドンあなたがそれを呼び出すときにかっこを使用しないでください。これは、あなたがそれを呼び出す方法です:
F "text to save"
3
関連する問題
- 1. 、bashのコマンドラインではbash/CSH
- 2. 色(ないbashの)bashで
- 3. bashの:ナノ:コマンドのWindowsのgit bashの
- 4. bashへのパイプでのbash戻り値
- 5. はbashでので、通常のbash
- 6. bashの
- 7. bashの
- 8. bashの
- 9. bashの
- 10. bashの
- 11. のbash:
- 12. bashの
- 13. bashの
- 14. bashの -
- 15. bashの
- 16. bashの
- 17. bashの
- 18. (bashの)
- 19. bashの
- 20. bashの
- 21. bashの
- 22. bashの
- 23. BashコマンドとしてのBashコマンド引数
- 24. BashシェルとBashターミナルの違いは?
- 25. BASH getopt in bash関数
- 26. Bash
- 27. bash -
- 28. 、BASH
- 29. BASH
- 30. bash
+1、素敵な答え。あなたは、より複雑な(しかしより良い)構造を使用して引数を出力する理由をより詳細に説明してもらえますか? – Kaii
stdinまたは引数からの入力だけが可能です。テスト式は、引数がゼロで、stdinが端末から来ている状況を防ぎます。その場合、tty自身のプロセスが読み込みとブロックを行っているので、シェルをkillする必要があります。それが合格すると、位置パラメータが設定されていれば展開されるか、関数の入力から展開が読み込まれます。 'cat 'を使うと移植性は少し向上しますが、より緩やかな解決策が可能です。これには実際の/ dev/fd/*システムが必要です。私は以前の答えが他のものと同じであったので、このトリックを投稿しました。 :) – ormaaj
また、 'echo'と同じように*複数の引数を許しています。あなたの関数は 'f one two three'で動作しますが、他の関数は 'f"で動作します。 qotesなしで入力が与えられた場合、他のソリューションは最初の単語(ここでは「1」)のみを考慮に入れます。 – Kaii