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



9
lsコマンドから出力の1列だけをエコーするにはどうすればよいですか?
lsコマンドを実行すると、出力は次のようになります。 file1 file2 file3 file4 出力の特定の列、この場合はfile2のみを表示することは可能ですか?私は次のことを試みましたが成功しませんでした: echo ls | $2 基本的に私がしたいのは、2番目の列のみをエコーすることです。この場合、エコーしたいのです。 file2
54 bash  ls  parameter  arguments 

3
配列をコマンドの引数に変換しますか?
コマンドの「オプション」の配列があります。 my_array=(option1 option2 option3) 配列の値をオプションとして使用して、bashスクリプトでこのコマンドを呼び出します。したがって、次のようにcommand $(some magic here with my_array) "$1"なります。 command -option1 -option2 -option3 "$1" どうすればいいですか?出来ますか?
40 bash  parameter  array 


4
空の場合を除き、bash反復ファイルリスト
これは簡単だと思っていましたが、予想よりも複雑であることが判明しています。 ディレクトリ内の特定の種類のすべてのファイルを反復処理するため、次のように記述します。 #!/bin/bash for fname in *.zip ; do echo current file is ${fname} done これは、ディレクトリに一致するファイルが少なくとも1つある限り機能します。しかし、一致するファイルがない場合、私はこれを取得します: current file is *.zip 次に試しました: #!/bin/bash FILES=`ls *.zip` for fname in "${FILES}" ; do echo current file is ${fname} done ファイルがない場合、ループの本体は実行されませんが、lsからエラーが発生します。 ls: *.zip: No such file or directory 一致するファイルをまったく処理しないループを作成するにはどうすればよいですか?
33 bash  parameter 

2
`set -eu`を使用する場合のEXITおよびERRトラップの正しい動作
set -e(errexit)、set -u(nounset)とともにERRおよびEXITトラップを使用すると、奇妙な動作が見られます。それらは関連しているように見えるので、それらを1つの質問に入れるのは合理的です。 1)set -uERRトラップをトリガーしません コード: #!/bin/bash trap 'echo "ERR (rc: $?)"' ERR set -u echo ${UNSET_VAR} 予期:ERRトラップが呼び出されます。RC!= 0 実際:ERRトラップは呼び出されません、RC == 1 注:set -e結果は変わりません 2)set -euEXITトラップでの終了コードの使用は1ではなく0です コード: #!/bin/bash trap 'echo "EXIT (rc: $?)"' EXIT set -eu echo ${UNSET_VAR} 予期:EXITトラップが呼び出されます、RC == 1 実際:EXITトラップが呼び出され、RC == 0 注:を使用するset +e場合、RC == 1です。他のコマンドがエラーをスローすると、EXITトラップは適切なRCを返します。 編集:このトピックには、使用されているBashバージョンに関連している可能性があることを示唆する興味深いコメントを含むSO投稿があります。このスニペットをBash 4.3.11でテストすると、RC …

2
コマンドラインの用語:コマンドのこれらの部分は何と呼ばれていますか?
コマンドラインでは、次のような「単純な」コマンドをよく使用します。 mv foo/bar baz/bar しかし、私はこれのすべての部分を何と呼ぶべきかわかりません: ┌1┐ ┌──2───┐ git checkout master │ └──────3──────┘ └───────4─────────┘ 私は(私は)1がコマンドであり、2が引数であることを知っており、おそらく3を引数リストと呼びます(それは正しいですか?)。 しかし、私は4と呼ぶべきか分からない。 より複雑な「コマンド」はどのようにラベル付けされますか? find transcripts/?.? -name '*.txt' | parallel -- sh -c 'echo $1 $2' {} {/} 1,2,3,4を何と呼ぶか​​、たとえば上記のこの「コマンド」の各部分を何と呼ぶか​​を分解する回答をいただければ幸いです。 ここには含まれていない、他に類を見ない/驚くべきことについても学ぶことは素晴らしいことです。


2
GRUB2およびカーネルvga =パラメーター
ドキュメントによると、vga=カーネルパラメーターの使用はGRUB2で非推奨になりました。一部の新しいカーネルが特定のアダプターでサポートしていないように見えるという事実は、私が持っているグラフィックスカードが7〜8年前のものであるため、問題ではありません。 問題は、デフォルトの80x25文字ではなく、80x50などの高解像度テキストモードを使用したいということです。どうやらすべてのグラフィックス(VBE / VESA)モードはこのグラフィックスカード(ATI Rage XL)の対象外です-利用可能なモードのリストは0を通してのみ表示され6ます。6でも80x60恐ろしいように見えるので、1(80x50)にしたいと思います。 デフォルトモードがサポートされていない場合(デフォルトはコメントアウトGRUB_TERMINAL=console)、使用可能なモードのリストを取得した後、80x50および80x60が動作するのを確認し、選択するように求められました。 カーネルコマンドラインですべての使用GRUB_GFXMODE(プリロードvbeモジュールの有無にかかわらず)を設定して、GRUB_GFXPAYLOAD_LINUX=keep失敗する場合、モードを設定するにはどうすればよいですか?このように失敗します:このマシンにあるカードのグラフィックモードが無効であるため、画面が空白のままになりますか? 私の考えはnomodesetまだカーネルに渡すことですが、ブートローダーはグラフィックモードを設定する必要があります。そして、それvga=を行うためのカーネルパラメーター以外のオプションは表示されません。 注:vbetestとvideotestGRUB2コンソール意志の空白のコマンド画面と、画面には何のビデオ入力がないと主張した後、スリープモードに切り替わります。vbeinfoそしてvideoinfo上記以外のいくつかの利用可能なモードを示したが、これは設定されるべきところのない言及はありません。また、カーネルコマンドラインでvga=1(なしでnomodeset)を渡すと、廃止されることについて非常に短い警告が表示されますが、完全に読むには長すぎdmesgます。出力はに表示されません。

1
関数パラメーターによって提供されるコマンドを実行する
パラメーターによってメソッドに提供されるコマンドを実行するbashスクリプトで関数メソッドを作成しようとしています。 次のような意味: special_execute() { # Some code # Here's the point where the command gets executed $@ # More code } special_execute echo "abc" 私はすでに私が試した$@、"$@"、$*、"$*"私はそれをどのように行うことができますか?

2
bashスクリプトで関数にパラメーターを渡す方法は?
多くの異なる変数を持つスクリプトから呼び出すことができる関数を書きたいです。いくつかの理由で、これを行うのに多くの問題を抱えています。例私が読んだことは常にグローバル変数を使用するだけですが、それは私が見ることができる限り私のコードをそれほど読みやすくしません。 使用例: #!/bin/bash #myscript.sh var1=$1 var2=$2 var3=$3 var4=$4 add(){ result=$para1 + $para2 } add $var1 $var2 add $var3 $var4 # end of the script ./myscript.sh 1 2 3 4 $1関数でなどを使用してみましたが、スクリプト全体が呼び出されたグローバルなものが必要になります。基本的に私が探しているようなものである$1、$2とそうではなく、関数のローカルコンテキストで。ご存じのように、関数は適切な言語で動作します。

4
echo $ -1は何を表示しますか?
出力を何をecho $-1、echo $-2、echo $-3平均..? 私のLinuxボックスの1つでは、次のように表示されます。 echo $-1 imsBEl1 echo $-2 imsBEl2 また、別のLinuxボックスでは、次のように表示されます。 echo $-1 himBH1 echo $-2 himBH2 それらはいくつかのメモリ位置または他の何かにマッピングされていますか?
14 shell  echo  parameter 


2
ルート対応スクリプトに変数を安全に渡す方法は?
この質問は完全に一般的なものであり、私の状況にのみ適用されるわけではありません。たとえば、DHCPを有効にする次の小さなスクリプトのよう$1に、コマンドライン(!!)で送信する変数()は、送信するホスト名のみです。 #!/bin/bash udhcpc -b -i eth0 -h $1 このようにudhcpcを実行するにはルートアクセスが必要なので、これを行う/etc/sudoersには、次の行を含むように変更する予定です。 joe ALL = NOPASSWD: /path/to/enable_dhcp.sh 次のコマンドを実行するだけで、「joe」がそのスクリプトをルート権限で簡単に実行できるようになります sudo /path/to/enable_dhcp.sh パスワードを求められない(これは、joeがこれをスクリプト化できるようにするためです)。 今..私は、ルート権限で簡単に実行できるスクリプトで使用することは、あなたが望むものを何でも注入できるので、恐ろしいアイデアであることを知っています(または少なくとも私はそう思います)$1。 だから...これに対処する最良の方法は何ですか?インジェクション攻撃に対して広く開かれていないときに、root権限でjoeに必要なことをさせ、変数を渡す(または環境変数を使用して効果的に行う)ようにするにはどうすればよいですか?

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