1

ユーザーが表示したい月と年を入力する、最初のUNIX / Linuxクラス用のbashスクリプトを書いています。ユーザー入力を指定してカレンダーを実行する方法がわかりません。

これが私が持っているものです。

#!/bin/bash  
echo -n "Enter the month you wish displayed: "; read month  
echo -n "Enter the year you wish displayed: "; read year  
echo cal '$month' '$year'  
4

1 に答える 1

1

を使用するechoと、残りの行 (シェルによる可能な処理の後) が出力されますstdout(または、次のプロセスにパイプされる可能性があります)。これによりcal、コマンドとして扱われなくなります。

"'nix で使用される引用符には、二重引用符と'単一引用符のさまざまな種類があります。` バッククォートもあります。それぞれに非常に具体的な用途があります。

バッククォートで囲まれたコマンドはインラインで展開されます。つまり、コマンドが実行され、出力が行に表示されます。したがって、

echo hello `whoami`

ユーザー名 (コマンドへhello johnの応答) が.whoamijohn

一重引用符には逆の効果があります。シェルからテキストを「保護」するため、それ以上の処理は試行されません。したがって

echo hello '`whoami`'

結果として

hello '`whoami`'

二重引用符"は、制限が少し緩和されます。($変数)、\(エスケープ)、および ` バッククォートは引き続き解釈されますが、スペースを含む引数をスクリプトに渡す良い方法です。したがって

doSomething for me

、およびの 2 つのパラメーターを関数に渡しdoSomethingます。一方でforme

doSomething "for me"

単一のパラメーターのみを渡します。for me

これがあなたにとって物事を明確にすることを願っています。

于 2013-04-09T23:22:14.907 に答える