Linux:ローカル変数のsetコマンド


9

ローカル/環境変数とエクスポート/設定コマンドを理解しようとしています。

$ set FILEM="razrax"
$ echo $FILEM

$ FILEN="test"
$ echo $FILEN
test

echo $FILEM空の文字列を返す理由を説明してください

回答:


21

と混同bashしていcshます。

bash任意のボーン状シェルのように、setコマンドであるセットオプション(のようなシェル構成設定-f-C-o noclobber...)及び位置パラメータ($1$2...)。

set FILEM="razrax"

に設定$1FILEM=razraxます。

$ set FILEM="razrax"
$ echo "$1"
FILEM=razrax

Bourneのようなシェルでの変数割り当ての構文は次のとおりです。

VAR=value

(の両側にスペースは許可されません=)。

kshそして、他のいくつかのBourneのようなシェル(mksh、pdksh、zsh)は配列変数を割り当てることもできsetます:

set -A array value1 value2

zshbashyashおよび新しいバージョンのkshこの構文の代わりに使用:

array=(value1 value2)

対照的に、cshまたはtcshでは、構文は次のとおりです。

set VAR = value
set array = (value1 value2)

=オプションの周りのスペース)。

ではrc/ esシェル:

VAR = value
array = (value1 value2)

=オプションの周りのスペース)。


いい答えてくれてありがとう。私が理解していない唯一のことは、異なるbenweetオプションとローカル変数「setはオプションを設定するコマンドです」の違いです。
iJava 2015

@iJava、オプションをset -C設定し-Cます(と同じset -o noclobber)。set foo割り当てfoo$1(及び$#1である、( $2$3以前に設定されている場合)未設定です)。詳細については、シェルのマニュアルを確認してください。
ステファンChazelas

1
どんな選択肢があるのか​​わかりません。これらのオプションはmain(String [] args)などのプログラムに送信されますか?または何?どこで使用されていますか?
iJava 2015

1
@iJava、これらはシェルの動作に影響を与える設定です。ここでも、RTFM
ステファンChazelas
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.