問題タブ [bash-function]

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 投票する
2 に答える
315 参照

bash - エクスポートされた関数のトラップは黙って無視されました

この Bash スクリプトは期待どおりに動作します。

test_this.sh

印刷します

ただし、この関数をエクスポートしようとすると、トラップに失敗します。

test_this2.sh

コマンドラインでこれを入手して実行します。

結果は

罠はどこに行った?

0 投票する
2 に答える
535 参照

bash - シェルスクリプトが最初の引数を受け入れないのはなぜですか

Unixシェルスクリプトは初めてです。引数を指定してサンプル関数を実行しようとしていますが、シェルは最初の引数を最初の引数として認識せず、2 番目の引数として認識します。

出力関数を受け取りませんでした

与えるべきだった場所

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

bash - ディレクトリを除くディレクトリ内のすべてのドットファイルを処理する Bash 関数

選択したディレクトリ内のすべてのドットファイル (ディレクトリなし) をフィルタリングする bash 関数を作成しようとしています。フルパスではなく、ファイル名のみが必要です。

現時点では、次のコマンドしかありません。

ディレクトリを除くすべてのファイルを出力します。今でも非ドットファイルを除外する必要があります。だから私は次のように出力をgrepにパイプしようとしました:

そしてそれはうまくいかないようでした。->

これに対するエレガントな解決策はありますか?

ありがとう!

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

bash - Bash: 複数行の関数結果を並べてフォーマットする

access.logサーバー上のファイルをダイジェストする 3 つの関数があります。

それらはすべて、単独で使用すると正常に機能します。3 つすべてが 2 つの小さな列のデータを出力します。

今、私は別の関数を作成しようとしています。この関数は、最初の 3 つの関数の結果であるヘッダー付きの 3 列のデータを出力するための書式設定機能reportを単純に使用します。printfそんな感じ:

問題は、フォーマットが私が望むものではないということです。列を並べてではなく、水平に印刷します。

どんな助けでも大歓迎です。

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

linux - bashでティーは関数変数をローカルにしていますが、これをエスケープするにはどうすればよいですか?

私は、標準出力とファイルの両方に書き込む必要があるbash sciptにこだわっています。関数とその中にいくつかの変数を使用しています。関数をファイルにリダイレクトして画面に印刷しようとすると、関数で使用した変数を使用できないため、何らかの形でローカルになります。簡単な例を次に示します。

出力:

前もって感謝します!

編集: 使用する@Etan Reisnerの提案に対応 var 2>&1 > >(tee $LOGV)

この構成の唯一の問題は、ログ ファイルがすべてを受信しないことです...

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

xcode - 実行する必要があるスクリプト sh をトリガーするエイリアス

ここの初心者、たくさんのアイデアを読んで試してみましたが、今はちょっとイライラしています。

エイリアスと bash 関数について学ぶ

それはすべて、私が先週迅速に学習しようとしているときにエラーが発生し、私を何時間も追い詰めたために始まりました。しかし、派生データの他の修正をダンプして、キャッシュをクリアし、クリーンしてビルドすることについて知りました。それらすべてを一度に実行してみませんか。

これをしなければならなかった後、exe関数でこれを行う方法が必要だと思いました。私はel capを備えたMacBook Proを使用しています

それから私は別名に出くわしました。そして、まったく新しい獣が現れました。どこかを読んで aliases.sh を作成し、bash_profile をそこに向けます。だから私はそれをしました。私は基本を動かします。これをaliases.shの関数に入れようとしましたが、うまくいきませんでした。そのため、別の .sh を作成して、aliases.sh からトリガーしようとしていました。端末はそれが好きではありませんでした。エラーで戻ってきて、それらを取り除く唯一の方法は、それらを削除して最初からやり直すことでした. これを数回行いました。

それが私が持っていて、やろうとしていることです。

最後の行を入力するまで、すべてうまくいきました。それに伴うbashの問題。これは私が xcodeClean.sh の中に持っているものです。写真を入れなければなりませんでした。大混乱なしにコピーペーストする方法を理解できませんでした。

xcodeReset.sh /br

そのため、.sh から bin/bash を取り出して、/users/ の前に bash を配置しようとしましたが、ご存知のように、ターミナルを実行すると最初からエラーが発生します。そして、私が何をしても、それらを乗り越えることができませんでした。きれいな新しい端末の外観に戻す唯一の方法は、xcodeReset とエイリアスの両方を削除して最初からやり直すことでした。これで、メモ帳からそのコードをコピーして貼り付けることができます。しかし、私はこの小さな悪魔を回避する方法があることを知っています. ここや他のフォーラムで xCode 用のこのクリーナーを見つけました。単純なエイリアスで実行しようとしています。

私はここではかなり環境に優しく、可能性があるとわかっていることに取り組んでいます。何かお役に立てば幸いです。答えを求めて一晩中掘り下げる夜が多すぎます。

0 投票する
2 に答える
212 参照

bash - 成功時にエコーするメッセージを含むコマンドを bash 関数に送信するにはどうすればよいですか?

コマンドが正常に実行されたかどうかを確認し、そうでない場合はエラーをスローする関数を作成しました。

指定されたエラーで実行する次のコマンドがあるとします。

したがって、基本的には、次のようなものです。

しかし、私は得るa.sh: line 3: This worked: command not found

echoここで を正しく動作させるにはどうすればよいですか?

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

bash - パラメータを bash 関数にエスケープする

まず、問題を説明します。Linux デスクトップから Android タブレットにファイルをコピーすることがよくあります。入りたくない理由により、これを行う最も簡単な方法は、タブレットで sshDroid (ssh サーバー) を実行scpし、シェルから を使用してファイルをコピーすることです。scpコマンドの形式は次のとおりです。

この式で変更されるのはファイルの名前だけであり、タブ補完を使用して非常に簡単に取得できます。IPアドレスすら変わらない。ファイルを頻繁にアップロードするので、同じ文字を何度も入力したくありません。この目的のために、シェル関数を作成して に追加すると思いました.bashrc。私が書いた関数は次のとおりです。

その使用法は次のようになります。

しかし、試してみると、次の出力が得られます。

bash はファイル名を関数に渡す前に自動的にエスケープ解除しているように見えますが、名前にスペースがあるため、scp コマンドはそれを複数のファイル名として扱います。

私の質問は次のとおりです。パラメーターでバックスラッシュを保持するにはどうすればよいですか、または関数内でバックスラッシュを再エスケープするにはどうすればよいですか? しばらくこれをいじった後、単純な python スクリプトを作成して /usr/local/bin にドロップしたくなりました。私が見逃している他のbashネイティブソリューションはありますか?