問題タブ [sh]
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.
bash - posix モードの bash がシンボリックリンクの追跡に失敗するのはなぜですか?
Linux システムに対して「ssh」を実行すると、奇妙な動作が見られます。posixモードで起動したときのbashの違いまで、途中で追跡しました。
bash の man ページには、posix モードで次の項目があります。
--> cd ビルトインが論理モードで呼び出され、$PWD から構築されたパス名と引数として指定されたディレクトリ名が既存のディレクトリを参照していない場合、cd は物理モードにフォールバックする代わりに失敗します。
--> pwd ビルトインに -P オプションを指定すると、$PWD がシンボリック リンクを含まないパス名にリセットされます。
--> pwd ビルトインは、-P オプションでファイル システムを確認するように求められていなくても、表示される値が現在のディレクトリと同じであることを確認します。
私が見ているものとまったく同じように聞こえるものはありません。
起動ファイルに特別な PWD 関連の変数が設定されていないようです。--posix は、使用される起動ファイルを制御することを知っています。
シンボリックリンク追跡のようなものを明示的に制御する変数はありますか?
この効果を「元に戻す」方法はいくつか考えられますが、なぜそうなっているのかを知る必要があります。
私は ssh を使用して make を実行していますが、make は を使用してpwd
おり、その pwd が間違った答えを出しています。ENV 設定から直接取得する必要があります。何が起こっているのかについてのドキュメントをどこかで見つけたいと思います。
unix - UNIX コマンド ライン引数の参照に関する問題
Bourne Shell スクリプトに渡されたコマンド ライン引数を出力するように unix に指示しようとしていますが、うまくいきません。目的の場所にあるコマンド ライン引数ではなく、echo ステートメントで x の値を取得します。
これは私が欲しいものです:
./abcd を実行
あいうえお
これは私が得るものです:
1 2 3 4
どうしたの?シェル スクリプトで参照しているもの (変数 x または x 番目の位置にあるコマンド ライン引数) に従って、UNIX が混乱していることはわかっています。
編集: 回答ありがとうございますが、別の質問があります。最初の引数ではなく、2 番目または 3 番目の引数でカウントを開始したい場合はどうすればよいでしょうか? では、2 番目の位置から始まる要素を処理し、最初の位置を無視するように UNIX に指示するにはどうすればよいでしょうか?
unix - UNIXで式と等しい変数を設定することは可能ですか?
Unix では、これをどのように行うのでしょうか?
x
値を取得したいのです"Hello"
が、このスクリプトは機能していないようです。上記のようなものを綴る適切な方法は何でしょうか?
xml - ant 経由で渡された引数を testng.xml に読み込む方法
シナリオは次のとおりです。
1 つの引数で antを呼び出すシェル スクリプトを作成します。次に、antは同じ引数を渡してtestng.xml (スイート ファイル) を実行し、testng は同じ引数を渡してテストを実行します。
私の場合、どのブラウザ テストを実行するかを指定するブラウザ文字列eg.(firefox, iexplore) 引数を渡しています。テスト結果の出力で、テストが実行されたブラウザーを確認できるようにしたいと考えています。
次のようにして、ant のコマンドラインから引数を取得します。
...
アリはtestng.xmlを呼び出すので、testng.xmlでも同じことができると思っていました
私はtestng.xmlに行き、次のようなことをしました:
誰も失っていないことを願っています。物事を説明するのに最適ではありませんが、この引数を testng.xml にキャプチャしてスイート名に含める必要があるだけです
linux - Linux: スクリプトでバイナリを実行する
スクリプト経由でプログラムを実行したい。通常./program
、シェルに入力すると、プログラムが起動します。
私のスクリプトは次のようになります。
失敗しました。最後の行が間違っていたと思います...
私はこれが幼稚な質問であることを知っていますが、thxはたくさんあります!
unix - テキスト行から特定の列を選択する方法は?
次の文があるとします。
そして、その文から「is」という単語を変数にコピーしたいと思います。探している単語を事前に知らずに、どうすればその単語にアクセスできますか? 特定の単語または文字列が 5 列のテキスト行の 3 列目にあることがわかっている場合、3 列目にある単語を取得するにはどうすればよいですか?
ボーンシェルを使用しています。
bash - エコーせずにシェルスクリプトからパスワードを取得する方法
パスワードで保護されたシステムにアクセスする必要があるプロセスを自動化するスクリプトがあります。システムには、ユーザーパスワードを引数として受け入れるコマンドラインプログラムを介してアクセスします。
ユーザーにパスワードを入力してシェル変数に割り当て、その変数を使用してアクセスプログラムのコマンドラインを作成するように促します(もちろん、処理するストリーム出力が生成されます)。
私はBourne/Bashでかなり有能なシェルプログラマーですが、ユーザー入力を端末にエコーさせずに(または「*」文字を使用してエコーさせずに)受け入れる方法がわかりません。
誰かがこれを手伝うことができますか?
linux - /bin/sh -c とは何ですか?
とは/bin/sh -c
どういう意味ですか? 何をし-c
ますか?
c - sh/bash がコマンド置換を実行しないようにする方法はありますか?
C プログラムから、ファイル名をパラメータとしてシェル スクリプトを呼び出したいと考えています。ユーザーはファイル名を制御できます。Cは次のようなものです(初期化/エラーチェックは省略):
ターゲット デバイスは実際には組み込みシステムなので、悪意のあるユーザーを心配する必要はありません。明らかに、これは Web 環境での攻撃ベクトルになります。それでも、たとえば名前に逆引用符が含まれるファイル名がシステムにある場合、シェルが名前の展開を実行するため、コマンドは失敗します。コマンド置換を防ぐ方法はありますか?
shell - シェル関数内で「set -e」の効果と有用性を得るにはどうすればよいですか?
set -e
(または で始まるスクリプト#!/bin/sh -e
) は、問題が発生した場合に自動的に爆破するのに非常に役立ちます。失敗する可能性のあるすべてのコマンドをエラー チェックする必要がなくなります。
関数内でこれに相当するものを取得するにはどうすればよいですか?
たとえば、エラー終了ステータスでエラーが発生するとすぐに終了する次のスクリプトがあります。
出力は期待どおりです。
これを関数にラップしたいと思います。
期待される出力:
実際の出力:
(つまり、関数は無視していますset -e
)
これはおそらく予期される動作です。set -e
私の質問は、シェル関数内の効果と有用性を得るにはどうすればよいですか? 呼び出しごとに個別にエラー チェックを行う必要がないように設定できるようにしたいのですが、エラーが発生するとスクリプトが停止します。結果を確認するまで、スタックを必要なだけ巻き戻すか、確認していない場合はスクリプト自体を終了する必要があります。これはset -e
、ネストしないことを除いて、既に行われていることです。
Stack Overflow 以外でも同じ質問がありましたが、適切な回答がありませんでした。