2

ファイルの名前を取得する小さなスクリプトを作成しました。

#objectname
echo "objectname"
read ON

これ以上簡単にはなりません。

取得したファイルでいくつかの処理を行います。

gpg -c --no-use-agent "$ON"

たとえば、ファイルがある場合a.exe->ファイルを暗号化し、別のmd5と拡張子を持つファイルを提供します。今、ファイルはこのように見えますa.exe.gpg

ここで、ファイルの名前を直接バインドするとします。

たとえば、次のように: から取得: このリンク

# This works
fileName='a.exe.gpg'
md5sum=$(md5sum ${fileName})
echo $md5sum

ちゃんと返します。

動的に実行したい場合はどうすればよいですか。

これは私が試したものです:

#does not work
gpg -c --no-use-agent "$ON"
fileName= `$ON.gpg`
md5sum= $(md5sum ${fileName}) 
echo $md5sum

ここでこのバグが発生upload.sh: 1: upload.sh: Fire.exe.gpg: not foundします。プログラムは終了しません。

私がやっている間違いはどこですか?

4

3 に答える 3

3

エラーは次のとおりです。

fileName= `$ON.gpg`
  1. の後にスペースを入れないでください=。(次の行も見てください。)
  2. 単に評価するのではなく実行する 逆引用符を使用しました。$ON.gpg逆引用符は と同じですが、$(...)エレガントではありません。これには二重引用符を使用します。

非常に詳細な説明と独自の解説については、Greg の引用に関する wiki エントリを参照してください。:-)

于 2012-07-20T00:54:19.767 に答える
2

シェルスクリプトで割り当てを行うときは注意してください。のどの辺にもスペースを使用しないでくださいoperator=。次のことを試してください。

fileName="$ON.gpg"
md5sum=$(md5sum ${fileName}) 

変数と代入operator=は、スペースなしで一緒になっていることに注意してください。

また、backticks as を使用すると、ユーザー ghiti が指摘したように`expression`、 using のようにシェルによって実行されます。$(expression)

于 2012-07-20T00:54:53.093 に答える
1

ファイル名の修正に失敗しました。

fileName="$ON.gpg"
于 2012-07-20T00:49:47.287 に答える