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

他のBourne / POSIXシェルとは対照的に、GNUのBourne Again SHellに固有の質問。Unixシェル全般に関する質問については、代わりに/ shellタグを使用してください。

3
`sed`とファイルにhere-docを使用する
ヒアドキュメントをsedコマンドに使用し、読み取るファイルと出力ファイルを提供したいと思います。 私は、高度なBashスクリプトガイドのヒアドキュメントを見てきましたが、ヒアドキュメントを使用する際の通常の引数については何も触れていません。可能ですか? 私は次のようなことを達成したいと思います: #!/bin/bash OUT=/tmp/outfile.txt IN=/my_in_file.txt sed $IN << SED_SCRIPT s/a/1/g s/test/full/g SED_SCRIPT > $OUT; どんな助けでも本当に感謝しています。

3
EOFを使用せずにbashスクリプトからのテキスト入力を自動化する
Ubuntu Linuxを実行しています。というプログラムがあるとしmyprogramます。このプログラムは、ユーザーに入力を求めます。具体的には、ユーザーはプロンプトが表示されたら整数を入力してを押す必要がありEnterます。bashスクリプトを使用してこのプロセスを自動化したいと思います。特に、myprogram例えばを100回実行したいとします(iから1に移動するカウンターを使用100)。を実行するたびmyprogramにi、プロンプトが表示されたらの現在の値を入力します。 (ちなみに、myprogramオプション/スイッチを取ります。これら-optionsはすべて定数なので、bashスクリプト内で指定されます。) このbashスクリプトの不完全なスケルトンは次のようになります。 #!/bin/bash for i in {1..100} do myprogram -options done 次に、上記のコードを変更iして、プログラムによってプロンプトが表示されたときにの現在の値が入力されるようにします。これを行う最良の方法は何ですか? 私が使用しているソフトウェアのWebサイトでは<<EOF、最後に使用することをお勧めしていmyprogram -optionsます。これは、入力が使用するために「ファイルの終わり」を調べるようにbashに指示すると思います。しかし、入力をファイルの最後に配置したくない場合はどうなりますか?<<またはの直後に配置したい場合はどうなり<ますか? その理由は、物事がより複雑になるからです。たとえばj、いくつかの非線形、非順次的な方法で変化する整数カウンターを紹介します。私は、その後の現在値送りたいと思うjのmyprogram各反復上に、しかし、の値がjへの呼び出しの間で変更される可能性がありmyprogram -options、ファイルの末尾EOF。 何か提案はありますか?

4
コマンドラインで末尾からテキストを実行する最も簡単な方法は何ですか?
新しい(ubuntu)ボックスに取り組んでいるときに、タイプするgitと警告が表示されることがあります。 The program 'git' is currently not installed. You can install it by typing: apt-get install git-core それが起こったら、私は次のようなことをすることで最後の行をつかむことができることを知っています: !! 2>&1 | tail -n 1 しかし、どうすればその結果(apt-get install git-core)を最も簡単に実行できますか? できると気づいた `!! 2>&1 | tail -n 1` しかし、実際に出力をパイプして実行する方法もありますか?これは機能していないようです: !! 2>&1 | tail -n 1 | sh また、その2>&1部分は少し扱いに​​くいので、それを実現する簡単な方法があるかどうか知りたいと思います。 編集する これを何らかの方法で変数に保存してから、変数を実行することもできます。 !! 2>&1 | tail …

4
Bashスクリプトに続行する前にステータスメッセージを待機させる
私はbashスクリプトでSeleniumサーバーを起動しています。以下のログのタイムスタンプからわかるように、完全にオンラインになるまでに約32秒かかります。 Feb 28, 2012 10:19:02 PM org.openqa.grid.selenium.GridLauncher main INFO: Launching a standalone server 22:19:02.835 INFO - Java: Sun Microsystems Inc. 20.0-b11 22:19:02.836 INFO - OS: Linux 2.6.32-220.4.1.el6.x86_64 amd64 22:19:02.852 INFO - v2.19.0, with Core v2.19.0. Built from revision 15849 22:19:02.988 INFO - RemoteWebDriver instances should connect to: http://127.0.0.1:4444/wd/hub 22:19:02.990 INFO …
10 bash  logs  pipe  search  selenium 


2
「if」でタスクをバックグラウンドに送信
どうしてこれなの? if true; then sleep 3 &; fi bash: syntax error near unexpected token `;' 走りたい sleep 3 コマンド["sleep 3"は単なる例]が "paralell"スタイルで実行されるようにバックグラウンドで実行されるため、より速く終了します。しかし、私はこれを手に入れています: bash: syntax error near unexpected token `;' エラーメッセージ。どうして?バックグラウンドにタスクを送信できないのはなぜですか?

2
139(セグメンテーション違反)を返すプログラムをbashでトラップするにはどうすればよいですか?
一部のプログラムをテストするbashスクリプトがあり、そのプログラムの1つが返されるSegmentation faultため、スクリプトの先頭にトラップを追加しようとしました。 trap "echo 'segfault occured!'" SIGSEGV しかし、それは何もしませんでした。使った echo $? segfaultを生成するプログラムの直後に、出力として139が表示されます。特定のエラーコードのトラップを追加するにはどうすればよいですか?

3
grepの結果からの行を実行する方法は?
特定のインストール手順が記載されたテキストファイルがあり、ファイル内での一意の出現をgrepできることがわかっています。たとえば、テキストファイルは次のようになります。 MYDIR = `find / home / user -name somedir` PERL5LIB = $ PERL5LIB:$ MYDIRをエクスポートします。 bashで、ファイル内のgrepの後に行を実行するにはどうすればよいですか?何かのようなもの: 「grep somedir INSTALLFILE」の実行結果 「grep 'export PERL5LIB' INSTALLFILE」の実行結果
10 bash  grep 

5
スクリプトから絶対パスを見つける
スクリプトで$0は、可能な相対パスを取得します。それを絶対に変換するために、私は理解できないこの解決策を見つけました: abspath=$(cd ${0%/*} && echo $PWD/${0##*/}) 私の問題は、内部の魔法である${0%/*}と${0##*/}。前者はdirnameを抽出し、後者はファイル名を抽出するように見えますが、方法はわかりません。
10 bash  path 

3
$を使用するためのベストプラクティスは?バッシュで?
$についてこの答えを読んだとき?別の質問が思い浮かびます。 $の使用方法に関するベストプラクティスはありますか?バッシュで? 例を挙げましょう: 線形スクリプトがあり、すべてのコマンドが正常に実行されたことを知りたいのですが。小さな関数( "did_it_work"と呼びましょう)を呼び出して、エラーコードを確認し、そうでない場合は中断しても問題ないと思いますか。 #!/bin/bash function did_it_work { code=$1 if [ "$code" -ne "0" ] then echo "Error failure: code $code " exit 1 fi } dir=some/path mkdir -p $dir did_it_work $? cd $dir did_it_work $? run_some_command did_it_work $? もちろん、このアプローチは、問題があれば手動で解決してスクリプトを再実行する必要があることを意味します。 これは良いアイデアだと思いますか、これを行うための他のベストプラクティスはありますか? /ありがとう

5
IFS(内部フィールド区切り文字)は、複数の連続する区切り文字の単一の区切り文字として機能できますか?
ホワイトスペース以外の値を持つIFSを使用して配列を解析すると、空の要素が作成されます。複数のdelimを1つのdelimに縮小するために 使用tr -sするだけでも十分ではありません。 例では、問題をより明確に説明でき ます。IFSの微調整を介して「通常の」結果を達成する方法はありますか(IFSの動作を変更するための関連設定はありますか?....つまり、デフォルトの空白と同じように動作するにはIFS。 var=" abc def ghi " echo "============== IFS=<default>" arr=($var) for x in ${!arr[*]} ; do echo "# arr[$x] \"${arr[x]}\"" done # sfi="$IFS" ; IFS=':' set -f # Disable file name generation (globbing) # (This data won't "glob", but unless globbing # is actually needed, turn …
10 bash  shell  scripting 


5
ssh経由のshスタートアップファイル
shシェルを開始する前に実行する必要があるいくつかの重要なコマンドがあります。これは、SSHコマンド(ssh host somecommand)およびコマンドを実行する他のプログラムでSSHコマンドを渡すために必要です。 私.profileにはこれがあります: ihammerhands@wreckcreations:~> cat .profile #specific environment and startup programs export PS1="\u@wreckcreations:\w> " export PYTHONPATH=~/python/lib/python2.4/site-packages export PATH=$PATH:~/bin:~/python/bin ただし、これは失敗します。 W:\programming\wreckcreations-site\test-hg>ssh name@host echo $PATH Enter passphrase for key '/home/Owner/.ssh/id_rsa': /usr/local/bin:/bin:/usr/bin PATHオプションがないことに注意してください shプロファイルの適切な名前は何ですか?注:私はrootアクセス権を持っていないので、これを他のユーザーに適用したくありません。これを行う別の方法はありますか? 編集:それは驚くべきことではない/bin/shへのリンクが表示されますbash。驚いたのは、私のプロフィールがまだ無視されていることです。助言がありますか?
10 bash  ssh  shell  profile 

3
「検索」出力から複数のファイルを開く方法は?
私はディレクトリにある複数のファイルを次のように開くことができることを知っています: find -name *.foo -xargs <command> {} \; これは機能しますが、geditで多数のテキストファイルを同時に開こうとすると、それらが連続して開かれます(1つのファイルが閉じられると、次のファイルが開かれます)。 これらのファイルをすべて同時に開きたいのですが。どうすればこれを達成できますか?
10 bash  find  xargs 

3
$ 0変数を分割してbashのディレクトリと相対パスを見つけるにはどうすればよいですか?
$ 0変数には、スクリプトのパス情報が含まれています。 パス情報を絶対パスに変更するにはどうすればよいですか?〜、。、..、または類似の処理方法を意味しますか? パス情報をディレクトリとファイル名に分割するにはどうすればよいですか? これにはpython / perlを使用できますが、可能であればbashを使用したいと思います。
10 bash  parameter 

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