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

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

2
親シェルでサブシェルの変数を使用できるようにする方法
私は、Webサービスからのレポートの時間を計るために、簡単で汚いスクリプトを作成しました。 BASE_URL='http://example.com/json/webservice/' FIRST=1 FINAL=10000 for report_code in $(seq 1 $FINAL); do (time -p response=$(curl --write-out %{http_code} --silent -O ${BASE_URL}/${report_code}) ) 2> ${report_code}.time echo $response # <------- this is out of scope! How do I fix that? if [[ $response = '404' ]]; then echo "Deleting report # ${report_code}!" rm ${report_code} …

4
bashスクリプトを使用したcrontabのインストール
crontabに2つのスクリプトをインストールするスクリプトを作成しました。 #!/bin/bash sudo crontab -l > mycron #echo new cron into cron file echo "*/05 * * * * bash /mnt/md0/capture/delete_old_pcap.sh" >> mycron #schedule the delete script echo "*/12 * * * * bash /mnt/md0/capture/merge_pcap.sh" >> mycron #schedule the merge script #install new cron file crontab mycron rm mycron スクリプトが実行され、2行がcrontabに追加されます。しかし、スクリプトを再度実行すると、これらの行が再び追加されるため、同じことを表す4行になります。インストールスクリプトを実行して、crontabに挿入された行が繰り返されないようにします。どうやってやるの
11 linux  bash  cron 

3
bashでファイルパスをURIに変換する
コマンドラインでファイルパスをURIに変換するにはどうすればよいですか? 例: /home/MHC/directory with spaces and ümläuts に file:///home/MHC/directory%20with%20spaces%20and%20%C3%BCml%C3%A4uts
11 bash  filenames 

3
何かをするために他のマシンにログオンするbashスクリプトを書く方法は?
bashスクリプトを書くことは可能ですか? マシンAから起動し、sshによって別のマシンBにログインします(マシンAとBの両方がLinuxマシンです)。 いくつかのファイルをマシンBにコピーします これらのマシンで特定のpythonスクリプトを実行します。 結果をマシンAに転送します マシンBからログオフします。 これは技術的に可能ですか?
11 bash  ssh  shell-script 

1
ノンブロッキングbashコマンド
次のbashスクリプトがあるとします。 #!/bin/sh gedit rm *.temp を使用して実行するとsh ./test.sh、geditポップアップが表示されますが、rmを閉じるまでパーツは実行されませんgedit。 geditが閉じていなくてもスクリプトを実行し続けたいです。のようにgeditbashの実行をブロックしていません。 私が挙げた例はほんの一例です(rm最初の例は実際の状況では機能しません)。
11 bash  job-control 

4
bash関数での暗黙の戻り?
次のようなbash関数があるとします。 gmx(){ echo "foo"; } この関数は暗黙的にechoコマンドの終了値を返しますか、それともreturnを使用する必要がありますか? gmx(){ echo "foo"; return $? } 私はbashの動作方法を想定しています。bash関数の最後のコマンドの終了ステータスは「返される」ものですが、100%確実ではありません。

3
ファイル名を変数に分割する方法は?
次の形式のcsvファイルのリストがあるとします。 INT_V1_<Product>_<ID>_<Name>_<ddmmyy>.csv ASG_B1_V1_<Product>_<ID>_<Name>_<ddmmyy>.csv INT_V1_&ASG_B1_V1_はすべてCSVファイルには、それに開始を意味し、固定されています。 ファイル名を変数に分割するにはどうすればよいですか? たとえば、名前を取得して変数に割り当てたいと考えました$Name。
11 bash  ksh 

1
SIGINTまたはSIGTERMが子プロセスではなく親スクリプト自体に送信されるときにコマンドまたは関数を実行する
私がこれを持っているとしましょう script.sh #!/bin/bash exit_script() { echo "Printing something special!" echo "Maybe executing other commands!" kill -- -$$ # Sends SIGTERM to child/sub processes } echo "Some other text" #other commands here sleep infinity 受け取ったときにscript.sh関数を実行したいまたは 例:exit_scriptSIGINTSIGTERM killall script.sh # it will send SIGTERM to my script スクリプトでこれを実行したい exit_script() { echo "Printing …

5
単一のディレクトリにある多数のファイルを移動する最も効率的な方法は何ですか?
CentOS 5.x これが繰り返し質問である場合は、お詫び申し上げます。(ファイルの削除に関して)同様の質問をたくさん見ましたが、まったく同じシナリオではありません。 数十万のファイル(おそらく100万を超える)を含むディレクトリがあり、別の問題の短期的な修正として、これらのファイルを別の場所に移動する必要があります。 議論の目的で、これらのファイルが元々存在していて/home/foo/bulk/、それらをに移動したいとします/home/foo2/bulk2/ 試行するmv /home/foo/bulk/* /home/foo2/bulk2/ と、「引数が多すぎます」というエラーが表示されます。 Google氏は、ファイルを一括で削除する別の方法として、findを実行することを教えてくれました。何かのようなもの: find . -name "*.pdf" -maxdepth 1 -print0 | xargs -0 rm 何かを削除していたとしても問題ありませんが、この場合はファイルを移動したいと思います... find . -name "*" -maxdepth 1 -print0 | xargs -0 mv /home/foo2/bulk2/bashのようにタイプすると、ファイルがディレクトリではないというメッセージが表示されます。 あるディレクトリから別のディレクトリにファイルをまとめて移動するためにここで使用するのに最適なコマンドは何ですか?
11 linux  bash  shell  find  rename 

2
BashにPerl RegExエンジンの使用を強制する
すでにご存じかもしれませんが、最新のRegExエンジンがサポートする機能の多く(後方参照、ルックアラウンドアサーションなど)は、Bash RegExエンジンではサポートされていません。以下は、私の最終目標が何であるかを説明するために作成した単純なBashスクリプトです。 #!/bin/bash # Make sure exactly two arguments are passed. if [ $# -lt 2 ] then echo "Usage: match [string] [pattern]" return fi variable=${1} pattern=${2} if [[ ${variable} =~ ${pattern} ]] then echo "true" else echo "false" fi したがって、たとえば、次のようなコマンドはfalseを返します。 . match.sh "catfish" "(?=catfish)fish" 一方、PerlまたはJavaScriptの正規表現テスターで使用すると、まったく同じ式で一致が検出されます。 後方参照(例(expr1)(expr2)[] \ 1 \ …

4
stdoutとstderrをログファイルにコピーし、スクリプト自体のコンソールに残します。
bashを使用して、stderrとstdoutをログファイルにコピーし、コンソールに表示したままにするにはどうすればよいですか? execを使用して、スクリプト自体の中でこれを実行したいと思います。 私が試した exec &>> log.out echo "This is stdout" echo "This is stderr" >&2 しかし、上記はコンソールに何も出力しません。どうすればこれをbashで実現できますか?
11 bash  exec  stderr 

2
引用符と二重引用符付きの引数をbashスクリプトに渡す
この時点で私は持っています: #!/bin/bash screen -p 'ScreenName' -x eval 'stuff '"'"$@"'"'\015' echo eval 'stuff '"'"$@"'"'\015' しかし、スクリプトを次のように呼び出すと、 # script.sh asd "asd" 'asd' 私の引数として渡された:asd asd asd そして私は出力を得ます: eval stuff 'asd asd asd'\015 私はaを除く:asd "asd" 'asd' スクリプトを変更して、引数行全体をすべて引用符で渡すにはどうすればよいですか?
11 bash  shell  quoting 

1
zshシェルからbashスクリプトを実行する
でbashスクリプトを実行できませんzsh。スクリプトは以下のスクリプトに似ており、bashで実行されることになっています。 #!/bin/bash echo "<235234>" | egrep -oe [0-9]+ ただし、私のシェルはデフォルトでzshにあるので、上記のスクリプトを実行するには/bin/bash、zshプロンプトで次のように入力し、を実行し. script.shます。 ただし、これによりエラーが発生し、次のエラーが発生します。 zsh: no matches found: [0-9]+ (235234代わりに取得する必要があります)。 この時点で私は混乱しており、次の質問があります。 にいる場合bash、なぜエラーが報告されるのzshですか? なぜegrep正規表現が失敗するのですか?正規表現は私には正しいようです。 注:必要に応じて、スクリプトを変更することは想定していません(スクリプトは複数のユーザーによって共有されており、変更を加えることは想定されていません)。 ありがとう
11 bash  zsh 



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