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

「シェル」という用語は、UnixおよびLinuxオペレーティングシステムに最も頻繁に関連付けられている、テキストベースの対話型コマンドインタープリターの一般的なクラスを指します。シェルスクリプトに関する質問については、「bash」、「powershell」、「ksh」などのより具体的なタグを使用してください。特定のタグがない場合は、ポータブル(POSIX準拠)ソリューションを想定する必要がありますが、「posix」を追加するか、代わりに「sh」を使用することをお勧めします。

7
バッシュとシェルスクリプトの変数の大文字の修正
私はすべて大文字の変数を含む多くのシェルスクリプトを実行しますが、これには重大な誤解があると常に考えていました。私の理解では、慣例により(そしておそらく以前から必要に応じて)、環境変数はすべて大文字で記述されています。 しかし、Bashのような最近のスクリプト環境では、一時的な変数には小文字の名前を使用し、エクスポートされた(つまり環境)変数には大文字の名前を使用するという規則を常に優先してきました。例えば: #!/usr/bin/env bash year=`date +%Y` echo "It is $year." export JAVA_HOME="$HOME/java" それはいつも私の考えです。このアプローチに同意または反対する信頼できる情報源はありますか、それとも純粋にスタイルの問題ですか?

11
シェルスクリプトの「for」ループ構文
私は以下を機能させました: for i in {2..10} do echo "output: $i" done これは、行の束を生成しoutput: 2、output: 3その上、。 ただし、以下を実行しようとしています: max=10 for i in {2..$max} do echo "$i" done 以下を生成します: output: {2..10} $ maxを文字列の一部ではなく配列のもう一方の端として扱う必要があることをコンパイラに認識させるにはどうすればよいですか?
190 unix  syntax  shell 

17
コマンドラインからmysqlリモートデータベースにアクセスする
Rackspaceを備えたサーバーがあります。ローカルマシンのコマンドラインからデータベースにアクセスしたい。 私は次のように試しました: mysql -u username -h my.application.com -ppassword しかし、それはエラーを出します: エラー2003(HY000): 「my.application.com」のMySQLサーバーに接続できません(10061) このエラーの原因とリモートデータベースへの接続方法を教えてください。




15
サブプロセスコマンドからのライブ出力
流体力学コードのドライバーとしてpythonスクリプトを使用しています。シミュレーションを実行するときが来たらsubprocess.Popen、コードを実行し、stdoutとstderrからの出力を収集してsubprocess.PIPE---次に、出力情報を印刷(およびログファイルに保存)して、エラーをチェックします。問題は、コードの進行状況がわからないことです。コマンドラインから直接実行すると、その反復、時間、次のタイムステップなどについての出力が得られます。 (ロギングとエラーチェックのために)出力を保存し、ライブストリーミング出力を生成する方法はありますか? 私のコードの関連セクション: ret_val = subprocess.Popen( run_command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True ) output, errors = ret_val.communicate() log_file.write(output) print output if( ret_val.returncode ): print "RUN failed\n\n%s\n\n" % (errors) success = False if( errors ): log_file.write("\n\n%s\n\n" % errors) もともと私はパイプをrun_command介しteeてパイプしていたため、コピーは直接ログファイルに送られ、ストリームは依然として端末に直接出力されていましたが、その方法では(私の知識に対して)エラーを格納できません。 編集: 一時的な解決策: ret_val = subprocess.Popen( run_command, stdout=log_file, stderr=subprocess.PIPE, shell=True ) while not ret_val.poll(): log_file.flush() …

14
Linuxでシェル関数を見つける-exec?
findシェルで定義した関数を実行する方法はありますか?例えば: dosomething () { echo "doing something with $1" } find . -exec dosomething {} \; その結果は次のとおりです。 find: dosomething: No such file or directory 取得する方法があるfindのを-exec見るためにはdosomething?
185 linux  bash  shell  find  bsd 

5
ゾンビプロセスを殺す方法
フォアグラウンドでプログラム(デーモンプログラム)を起動し、それをで殺しましたkill -9が、ゾンビが残っており、で殺せませんkill -9。ゾンビプロセスを殺すには? ゾンビが死んだプロセス(すでに殺された)である場合、どのようにしてそれを出力から削除しps auxますか? root@OpenWrt:~# anyprogramd & root@OpenWrt:~# ps aux | grep anyprogram 1163 root 2552 S anyprogramd 1167 root 2552 S anyprogramd 1169 root 2552 S anyprogramd 1170 root 2552 S anyprogramd 10101 root 944 S grep anyprogram root@OpenWrt:~# pidof anyprogramd 1170 1169 1167 1163 root@OpenWrt:~# kill -9 …





6
Bashで長さがゼロでない文字列をテストします:[-n“ $ var”]または[“ $ var”]
Bashスクリプトが長さ0以外の文字列を2つの異なる方法でテストするのを見てきました。ほとんどのスクリプトは-nオプションを使用します: #!/bin/bash # With the -n option if [ -n "$var" ]; then # Do something when var is non-zero length fi ただし、-nオプションは実際には必要ありません。 # Without the -n option if [ "$var" ]; then # Do something when var is non-zero length fi どちらが良い方法ですか? 同様に、これは長さゼロをテストするためのより良い方法です: if [ -z "$var" ]; then …

18
変数に標準エラーを格納する方法
次のようなスクリプトがあるとします。 役に立たない echo "This Is Error" 1>&2 echo "This Is Output" そして、私は別のシェルスクリプトを持っています: alsoUseless.sh ./useless.sh | sed 's/Output/Useless/' 「This Is Error」または他のstderrをuseless.shから変数にキャプチャしたい。ERRORと呼びましょう。 何かにstdoutを使用していることに注意してください。stdoutを使い続けたいので、この場合、stderrをstdoutにリダイレクトしても役に立ちません。 なので基本的には ./useless.sh 2> $ERROR | ... しかし、それは明らかに機能しません。 私もできることを知っています ./useless.sh 2> /tmp/Error ERROR=`cat /tmp/Error` しかし、それは醜く不必要です。 残念ながら、ここで答えが見つからない場合、それが私がしなければならないことです。 別の方法があるといいのですが。 誰か良いアイデアはありますか?

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