私の問題は、bashスクリプトを書くときに画面に印刷できないことです。
. myBashScript.sh < text.txt
ただmyBashScript.sh
印刷して書く
echo $2
ただし、「text.txt」を印刷する代わりに「newLine」が表示されます。私が知る限り、「<」は新しい行です。
なぜ$2
ダメなのtext.txt
?
答え1
実際に入力しているとします。
./myBashScript.sh < text.txt
スラッシュを使用します。
これを実行すると、./myBashScript.sh < text.txt
対話型シェルは実際に< text.txt
それをキャプチャし、特別なコマンドとして解釈します。具体的には、コマンドラインを解釈して、text.txt .shに関連付けられた標準入力を使用してmyBashScriptを実行する必要があることを意味します。これにより、< text.txt
コマンドラインからシェルが削除され、コントロールがmyBashScript.shに渡されます。したがって、シェルスクリプトに関する限り、引数はゼロで空です$2
。あなたのスクリプトは単に次のように翻訳されます。
echo
改行文字を印刷します。
実際にファイル名を印刷するには、次の点を考慮する必要があります。
#!/bin/sh
echo $1
その後、次を実行できます。
$ ./myShellScript text.txt
text.txt
一方、ファイルの内容を印刷するにはcat(1)を使用する必要があります。シェルスクリプトは次のとおりです。
#!/bin/sh
cat $1
その後、次を実行できます。
$ ./myShellScript text.txt
Hello from text.txt, a file containing a bunch of test strings.