問題タブ [variable-expansion]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
70 参照

macos - pandoc で関数を定義する Bash 拡張エラー

ここのアドバイスmanを使用して、コマンドを使用してマークダウンをスタイル出力に変換するエイリアスを設定しています。

エラーが発生し続けます:pandoc: !*: openFile: does not exist (No such file or directory)

しかし、私がそうするだけなら、コマンドワードは問題ありませんpandoc -s -f markdown -t man README.md | groff -T utf8 -man | less

この bash 展開構文に何か問題がありますか?

0 投票する
1 に答える
83 参照

bash - あいまいさを避けるためにこれが必要であるとPOSIX仕様は何を意味しますか?

このコメントに返信する場合:

これで、2 つの「:」が独立していることがわかりました。そのため、それらに関するドキュメントが見つかりませんでした。この場合、最初のものが必要ですか?

仕様の次の段落に初めて気付きました。

前に示したパラメーター展開では、フォーマットで <colon> を使用すると、未設定または null のパラメーターのテストが行​​われます。<colon> を省略すると、設定されていないパラメータのテストが行​​われます。パラメータが '#' でコロンが省略されている場合、アプリケーションは単語が指定されていることを確認する必要があります (これは、文字列の長さの拡張に関するあいまいさを避けるために必要です)。

bashリファレンスマニュアルで一致する説明を見ました:

以下に説明する形式 (例: ':-') を使用して部分文字列の展開を実行しない場合、Bash は未設定または null のパラメーターをテストします。コロンを省略すると、設定されていないパラメーターのみがテストされます。別の言い方をすれば、コロンが含まれている場合、オペレーターはパラメーターの存在とその値が null でないことの両方をテストします。コロンを省略すると、演算子は存在のみをテストします。

前と私は、これらの拡張のコロン バージョンとの違いを理解しています。

今私を混乱させたのは、仕様からの次の文です。

パラメータが '#' でコロンが省略されている場合、アプリケーションは単語が指定されていることを確認する必要があります (これは、文字列の長さの拡張に関するあいまいさを避けるために必要です)。

が指定されていない場合、ここでどのような曖昧さが生じる可能性があるのか​​ わかりませんword

拡張シジルはシェル変数名では有効ではないため、単一文字の変数名を開始することはできません。それらが可能であれば、 of を使用するparameterと、変数の長さを意味するのか、 などの代替展開を意味するのかがわからないため、コロンなしで#常にあいまいになります。${#+foo}foo#

ここで何が欠けていますか?wordそれが存在することを保証する必要があるあいまいさは何ですか? (wordつまり、この展開に含まれていないことは明らかに役に立ちませんが、それは同じことではありません。)

0 投票する
3 に答える
1893 参照

python - Python で数字のブロックを展開する

質問する前に、グーグルで検索しましたが、答えが見つかりませんでした。

私が持っているシナリオは次のとおりです。ファイルを介して\nで区切られた、またはコマンドライン引数を介してカンマで区切られた番号のリストがスクリプトに渡されます。数値は、次のように単数またはブロック単位にすることができます。

ファイル:

コマンドライン引数:

どちらも同じリスト [] になります。7 ~ 10 または 20 ~ 25 のブロックを展開し (実際のスクリプトでは、これらの数字は明らかに異なります)、それらを新しいリストに追加して、最終的なリストを次のようにします。

ここで .append(range(7,10)) のようなものが役立つことは理解していますが、元の list[] のどの要素に拡張が必要かを見つけることができないようです。

だから、私の質問はこれです:リスト[]が与えられた場合:

リストを取得する方法[]:

0 投票する
1 に答える
3996 参照

batch-file - Windows CMD バッチ: FOR /R with DelayedExpansion

私のデスクトップには、「test」という名前のフォルダーがあります。このフォルダ内には、「file1.txt」「file2.txt 」の 2 つのファイルがあります。

次の簡単なバッチ スクリプトを見てください。

ご想像のとおり、次のように出力されます。

次に、このバリエーションを見てみましょう。

その出力に違いはないと思います。ただし、次のとおりです。

!test!ラインで展開されているように見えますが、ラインECHO !test!ではなく、. もちろん、これは有効なパスではないため、FOR /R ループは繰り返されません。FOR /R !test!!test!

どうしてこれなの?私は何が欠けていますか?

0 投票する
4 に答える
403 参照

bash - 空の引用符で囲まれた引数を渡すことを省略します

ファイル名を含むか、設定されていない可能性のある bash スクリプトにいくつかの変数があります。それらの内容は、追加の引数としてプログラムに渡す必要があります。ただし、変数が設定されていない場合、これは空の引数を残します。

引用符がなければ、追加の引数が単純に省略されるため、問題なく機能します。ただし、変数にはスペースが含まれる場合があるため、ここで引用符で囲む必要があります。

空のテストで行全体を単純にラップできることを理解しています。

しかし、変数ごとに 1 つのテストを行うと、巨大で複雑な決定木が作成されます。

これに対するよりコンパクトなソリューションはありますか?引用符で囲まれた空の変数を省略するようにbashを作成できますか?

0 投票する
1 に答える
295 参照

bash - bash paste: ワイルドカードに基づいてファイルのペアをループし、個別の出力ファイルを生成します

貼り付けコマンドでファイルのペアをループし、それらを貼り付けて、それぞれを一意のファイルとして出力しようとしています。私は多くのことを試しましたが、ここにいくつかあります:


エラーなし、空の出力ファイル

出力:

$ がどのように使用されるかについて非常に基本的なことが欠けているに違いないと思いますが、一晩中グーグルで検索しても役に立ちませんでした。

前の行がこれについて何かに影響を与える理由はわかりませんが、文脈のために私のコード全体。