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

Bashスクリプトは、Bashシェル言語でスクリプトを作成しています。

1
ファイル名(パスにスペースを含む)をbashスクリプトのワインアプリに引数として渡す
引数としてファイルを渡してワインアプリを探し出したいです。ファイルは2つありますが、最初のファイルには問題はありませんが、パスにスペースがある場合、wineはアドレスを適切に処理できません。これらの2つのファイルは次のとおりです。 /home/op/Doc/test.pdf / home / op / Doc / test vs space.pdf コマンドラインからこのコマンドを使用して両方のファイルでアプリを正常に起動できます: [/home/op@box ~]: wine "C:\Program Files\Tracker Software\PDF Viewer\PDFXCview.exe" "z:Docs/test.pdf" [/home/op@box ~]: wine "C:\Program Files\Tracker Software\PDF Viewer\PDFXCview.exe" "z:Docs/test vs space.pdf" しかし、これをスクリプトに入れたい場合(後で別のプログラム、レンジャーで実行するため)、テストファイルを使用してプログラムを起動することはできません。最初のスクリプトはアドレスにスペースがないものでもうまく機能しますが、2番目のスクリプトは機能せず、pdfファイルを開かずにアプリを起動します。 スクリプト1:スペースを使用しないで作業する: #!/bin/bash Filename="z:${1//\//\\}" wine "C:\Program Files\Tracker Software\PDF Viewer\PDFXCview.exe" $Filename スクリプト2:どちらの場合でも機能しない #!/bin/bash Filename="z:${1//\//\\}" Filename='"'$Filename'"' wine "C:\Program Files\Tracker Software\PDF Viewer\PDFXCview.exe" …


3
lessをファイルに出力する
bashをしている間、ファイルの最後の3列を削除しようとしました。 head -n -3ファイル>ファイル しかし、ファイルは空になります。私はそれを回避することはできますが、それが何を引き起こすのか知りたいのです。 本当にありがとう!

2
Ifステートメントが期待どおりに評価されない。変数を間違って設定していますか?
特定の単語についてウェブサイトをチェックできるコマンドを作成しようとしています。行末で\を使用して次の行に折り返しました(ここで正しく使用したかどうかはわかりません)。これらの文字はスクリプトに含まれていません。 check=$(lynx -source $1 | grep -i $2) if [[ $check == *"$2"* ]] then /usr/local/bin/sendemail -o tls=yes -f ***@gmail.com -t\ trigger@recipe.ifttt.com -s smtp.gmail.com:587 -xu ***@gmail.com -xp *** -u\ $1 -m "contains the word " $2 "."; else /usr/local/bin/sendemail -o tls=yes -f ***@gmail.com -t\ trigger@recipe.ifttt.com -s smtp.gmail.com:587 -xu ***@gmail.com -xp …

1
forループ(* .txtのf)は、*。txtファイルが存在しない場合にエラーをスローします
次のような小さなbashスクリプトがあります。 #!/bin/sh for f in ./*.txt do f=$(basename $f) echo "Processing $f" scp somewhere mv $f done/`basename $f` done これは完全に機能していますが、ファイルがなくなるとすぐにこのエラーがスローされます:*.txt: No such file or directory なぜループに入るのか、どのようにこれを行うことができるのか疑問に思っています(おそらく新しいifなしで?)

1
cygwin / bash条件付き問題
WindowsでCygwinを使用していますが、結果を比較および出力するには条件付きで実行する必要があります。簡単に聞こえますが、期待どおりに機能しません。私のスクリプトは次のとおりです。 ls //NSVA/Matrical/Vitesse/REPORTS | grep .csv | grep $1 | grep -v Pull | wc -l > a ls //10.9.214.200/Lims/LimsLZ/starlims1/done/Nitrostore_stored/$1 | grep -v Pull |wc -l > b echo 'Count of Uploaded files in NS is' cat a echo 'Count of Uploaded files in LZ is' cat b if [ …

1
Bash:各リスト項目を新しい行で宣言することは可能ですか?
例:通常、水平レイアウトで値をリストします for var in 0 1 2 3 4 5 6 7 8 9 do echo $var done バージョン管理と読みやすさの目的のために、各リスト項目を独自の行に入力するとよいでしょう。これは可能ですか? 次のことはできません/r/n。 for var in 0 1 2 3 4 5 6 7 8 9 do echo $var done 興味深いことに、これはほとんど機能します(一重引用符または二重引用符に関係なく)。 for var in '0 1 2 3 4 5 6 7 8 …


0
最後のX秒で最も多くのRAMを使用するプロセスを見つける方法
これを整理するのを手伝ってもらえますか?私は、RAMの使用量(RAMだけでなくCPUとネットワークも)を監視し、過去X秒で最もRAMを使用する3つのプロセスを表示するbashスクリプトを作成しようとしていますか?次を実行することで、どのプロセスが最もRAMを使用するかを見つけることができることを知っています。 ps aux | awk '{print $2, $4, $11}' | sort -k2rn | head -n 3 しかし、これをどのように繰り返すことができますか?この正確な秒数では状況を確認したくありませんが、60秒間状況を監視し(実際に)、最も多くのRAMを使用していた上位3つのプロセスを確認します。

1
特定の名前とextでファイルを上書きするwindowsスクリプト
私は中に約300のサブフォルダを持つフォルダを持っています、各サブフォルダにいくつかのpngファイルがあります、そして私は私が作成した空の画像でこのファイルのいくつかを置き換える必要があります。 私は( "Void image.png"ファイルも含めて)メインフォルダにスクリプトを置き、私の画像でファイル名を.png extと "Bezel"に置き換えます 完全なファイル名はこのレイアウトを持っています "Bezel - XXXXXXXXXXXXXXX .png" 私はプログラマーではない、基本的な知識しかない 私はこれを作成しました、しかし、私はどう進むべきかわかりません.. $FileList = Get-Childitem -path -recurse -filter "*.png"; foreach ($File in $FileList) { $File.Name -match

4
特定のシェルを使用しているユーザー数を出力するwhileループBashスクリプト
そこで、/ etc / passwdから入力を受け取り、bash、nolongin、csh、およびkshを使用しているユーザー数を出力する、bashスクリプトのwhileループ関数を作成しようとしています。私は猫とカットを使うことになっていると思います。そして私は、ユーザーが使用するシェルのタイプが7番目のフィールドにあることを知っています。 シェルの種類ごとに変数を作成し、その特定のシェルを使用するユーザーが見つかるたびに変数を増やす必要があると考えるのは正しいですか。 これまでのところ、これは私が持っているコードですが、何らかの理由でそれは最後のifステートメントを出力するだけです.. declare -i bash; declare -i nologin; declare -i csh; declare -i ksh; bash=0; nologin=0; csh=0; ksh=0; cat /etc/passwd | cut -d: -f7 $line | while read line; do if [ $line == "bash" ] then bash=bash+1; else fi [ $line == "/sbin/nologin" ] then …

2
自作サービス開始時の「SYSVの起動失敗」
システム起動後にmonetdbデータベースを自動的に起動するサービスをrootでセットアップしようとしています。なぜなら、monetdbはそのようなメカニズムを提供していないからです。私が作った /etc/init.d/monetdb スクリプトファイル #!/bin/sh # # /etc/init.d/monetdb # Subsystem file for "MonetDB" starter # # chkconfig: 2345 95 05 # # processname: MonetDB # pidfile: /var/run/MonetDB.pid . /etc/init.d/functions case "$1" in start) su - monetka -c ". start.sh" touch /var/lock/subsys/monetdb ;; stop) su - monetka -c ". stop.sh" rm -f …

0
iotopの列幅を広げる
現在私のシステムの動作のスナップショットを取得するためにiotopコマンドを使用しています。 sudo iotop -C 10 20 > iotop.txt ただし、出力ファイルでは、テキストは次のようになります。 2017 Oct 14 16:13:45, load: 1.41, disk_r: 12504 KB, disk_w: 1920 KB UID PID PPID CMD DEVICE MAJ MIN D BYTES 501 920 1 com.apple.toneli ?? 1 4 R 512 501 342 1 com.apple.geod ?? 1 4 W 4096 501 917 …

1
ファイルやディレクトリを見つけてソートし、日付を抽出するための効率的なbashスクリプトを作成する方法
バックグラウンド: テストデータをテスト環境(Sybaseデータベース)にロードすることは一時的な措置です。 毎日データベースにインポートしなければならないファイルがたくさんあります。これらのファイルはそのように編成されています 30Aug2011/IMPORT_ME.txt 31Aug2011/IMPORT_ME.txt ... 8Sep2011/IMPORT_ME.txt 9Sep2011/IMPORT_ME.txt インポートのたびに、日付を修正するために特別なSQLステートメントを実行する必要があります。これが私がメインスクリプトでやったことです import_file.sh 20Aug2011/IMPORT_ME.txt cat rerun_import_file.tmpl | sed -e "s/XXX/8 Aug 2011/g" > rerun_import_files.sql $ISQL -i rerun_import_files.sql ... import_file.sh 9Sep2011/IMPORT_ME.txt cat rerun_import_file.tmpl | sed -e "s/XXX/9 Sep 2011/g" > rerun_import_files.sql $ISQL -i rerun_import_files.sql だから私はそれをより良くすることができると思います: 日付パターンに合うすべてのディレクトリを見つける 日付を正しくソートする(設定にとって非常に重要) 日付を解析して、sqlファイル内の日付を設定します。 しかし、私のbash script-fuはそれを実行するのに十分ではありません。

0
ドメイン名リストのipを取得するシェルスクリプト:接続がタイムアウトしました。サーバーに到達できませんでした
私はコマンドを実行する必要がありますWeb内のいくつかのソースからの次のスクリプトがあります host ファイル内のドメイン名のIPアドレスを取得する myfile.txt。スクリプトは次のとおりです。 #! /bin/bash while read hostname; do ip=`host $hostname` if [ $? -eq 0 ]; then echo $ip else echo "UNKNOWN" fi done < myfile.txt 1)このスクリプトのしくみを教えてください。私はif文が何をするのかわかりません。また全体的に説明できますか? 2)いくつかの出力はこのようになります。 somesite.com has address 1.2.3.4 ;; connection timed out; no servers could be reached あなたは私に言うことができます後のIPは何ですか? has address サーバーにアクセスできない場合はどうなりますか?する host コマンドは、サーバーに接続しようとするか、単にDNSからそのIPを取得しますか? どうか明らかにしてください。

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